(function(a, b) {
  function cy(a) {
    return f.isWindow(a) ? a: a.nodeType === 9 ? a.defaultView || a.parentWindow: !1
  }
  function cu(a) {
    if (!cj[a]) {
      var b = c.body,
      d = f("<" + a + ">").appendTo(b),
      e = d.css("display");
      d.remove();
      if (e === "none" || e === "") {
        ck || (ck = c.createElement("iframe"), ck.frameBorder = ck.width = ck.height = 0),
        b.appendChild(ck);
        if (!cl || !ck.createElement) cl = (ck.contentWindow || ck.contentDocument).document,
        cl.write((f.support.boxModel ? "<!doctype html>": "") + "<html><body>"),
        cl.close();
        d = cl.createElement(a),
        cl.body.appendChild(d),
        e = f.css(d, "display"),
        b.removeChild(ck)
      }
      cj[a] = e
    }
    return cj[a]
  }
  function ct(a, b) {
    var c = {};
    f.each(cp.concat.apply([], cp.slice(0, b)),
    function() {
      c[this] = a
    });
    return c
  }
  function cs() {
    cq = b
  }
  function cr() {
    setTimeout(cs, 0);
    return cq = f.now()
  }
  function ci() {
    try {
      return new a.ActiveXObject("Microsoft.XMLHTTP")
    } catch(b) {}
  }
  function ch() {
    try {
      return new a.XMLHttpRequest
    } catch(b) {}
  }
  function cb(a, c) {
    a.dataFilter && (c = a.dataFilter(c, a.dataType));
    var d = a.dataTypes,
    e = {},
    g, h, i = d.length,
    j, k = d[0],
    l,
    m,
    n,
    o,
    p;
    for (g = 1; g < i; g++) {
      if (g === 1) for (h in a.converters) typeof h == "string" && (e[h.toLowerCase()] = a.converters[h]);
      l = k,
      k = d[g];
      if (k === "*") k = l;
      else if (l !== "*" && l !== k) {
        m = l + " " + k,
        n = e[m] || e["* " + k];
        if (!n) {
          p = b;
          for (o in e) {
            j = o.split(" ");
            if (j[0] === l || j[0] === "*") {
              p = e[j[1] + " " + k];
              if (p) {
                o = e[o],
                o === !0 ? n = p: p === !0 && (n = o);
                break
              }
            }
          }
        } ! n && !p && f.error("No conversion from " + m.replace(" ", " to ")),
        n !== !0 && (c = n ? n(c) : p(o(c)))
      }
    }
    return c
  }
  function ca(a, c, d) {
    var e = a.contents,
    f = a.dataTypes,
    g = a.responseFields,
    h, i, j, k;
    for (i in g) i in d && (c[g[i]] = d[i]);
    while (f[0] === "*") f.shift(),
    h === b && (h = a.mimeType || c.getResponseHeader("content-type"));
    if (h) for (i in e) if (e[i] && e[i].test(h)) {
      f.unshift(i);
      break
    }
    if (f[0] in d) j = f[0];
    else {
      for (i in d) {
        if (!f[0] || a.converters[i + " " + f[0]]) {
          j = i;
          break
        }
        k || (k = i)
      }
      j = j || k
    }
    if (j) {
      j !== f[0] && f.unshift(j);
      return d[j]
    }
  }
  function b_(a, b, c, d) {
    if (f.isArray(b)) f.each(b,
    function(b, e) {
      c || bD.test(a) ? d(a, e) : b_(a + "[" + (typeof e == "object" ? b: "") + "]", e, c, d)
    });
    else if (!c && f.type(b) === "object") for (var e in b) b_(a + "[" + e + "]", b[e], c, d);
    else d(a, b)
  }
  function b$(a, c) {
    var d, e, g = f.ajaxSettings.flatOptions || {};
    for (d in c) c[d] !== b && ((g[d] ? a: e || (e = {}))[d] = c[d]);
    e && f.extend(!0, a, e)
  }
  function bZ(a, c, d, e, f, g) {
    f = f || c.dataTypes[0],
    g = g || {},
    g[f] = !0;
    var h = a[f],
    i = 0,
    j = h ? h.length: 0,
    k = a === bS,
    l;
    for (; i < j && (k || !l); i++) l = h[i](c, d, e),
    typeof l == "string" && (!k || g[l] ? l = b: (c.dataTypes.unshift(l), l = bZ(a, c, d, e, l, g))); (k || !l) && !g["*"] && (l = bZ(a, c, d, e, "*", g));
    return l
  }
  function bY(a) {
    return function(b, c) {
      typeof b != "string" && (c = b, b = "*");
      if (f.isFunction(c)) {
        var d = b.toLowerCase().split(bO),
        e = 0,
        g = d.length,
        h,
        i,
        j;
        for (; e < g; e++) h = d[e],
        j = /^\+/.test(h),
        j && (h = h.substr(1) || "*"),
        i = a[h] = a[h] || [],
        i[j ? "unshift": "push"](c)
      }
    }
  }
  function bB(a, b, c) {
    var d = b === "width" ? a.offsetWidth: a.offsetHeight,
    e = b === "width" ? 1 : 0,
    g = 4;
    if (d > 0) {
      if (c !== "border") for (; e < g; e += 2) c || (d -= parseFloat(f.css(a, "padding" + bx[e])) || 0),
      c === "margin" ? d += parseFloat(f.css(a, c + bx[e])) || 0 : d -= parseFloat(f.css(a, "border" + bx[e] + "Width")) || 0;
      return d + "px"
    }
    d = by(a, b);
    if (d < 0 || d == null) d = a.style[b];
    if (bt.test(d)) return d;
    d = parseFloat(d) || 0;
    if (c) for (; e < g; e += 2) d += parseFloat(f.css(a, "padding" + bx[e])) || 0,
    c !== "padding" && (d += parseFloat(f.css(a, "border" + bx[e] + "Width")) || 0),
    c === "margin" && (d += parseFloat(f.css(a, c + bx[e])) || 0);
    return d + "px"
  }
  function bo(a) {
    var b = c.createElement("div");
    bh.appendChild(b),
    b.innerHTML = a.outerHTML;
    return b.firstChild
  }
  function bn(a) {
    var b = (a.nodeName || "").toLowerCase();
    b === "input" ? bm(a) : b !== "script" && typeof a.getElementsByTagName != "undefined" && f.grep(a.getElementsByTagName("input"), bm)
  }
  function bm(a) {
    if (a.type === "checkbox" || a.type === "radio") a.defaultChecked = a.checked
  }
  function bl(a) {
    return typeof a.getElementsByTagName != "undefined" ? a.getElementsByTagName("*") : typeof a.querySelectorAll != "undefined" ? a.querySelectorAll("*") : []
  }
  function bk(a, b) {
    var c;
    b.nodeType === 1 && (b.clearAttributes && b.clearAttributes(), b.mergeAttributes && b.mergeAttributes(a), c = b.nodeName.toLowerCase(), c === "object" ? b.outerHTML = a.outerHTML: c !== "input" || a.type !== "checkbox" && a.type !== "radio" ? c === "option" ? b.selected = a.defaultSelected: c === "input" || c === "textarea" ? b.defaultValue = a.defaultValue: c === "script" && b.text !== a.text && (b.text = a.text) : (a.checked && (b.defaultChecked = b.checked = a.checked), b.value !== a.value && (b.value = a.value)), b.removeAttribute(f.expando), b.removeAttribute("_submit_attached"), b.removeAttribute("_change_attached"))
  }
  function bj(a, b) {
    if (b.nodeType === 1 && !!f.hasData(a)) {
      var c, d, e, g = f._data(a),
      h = f._data(b, g),
      i = g.events;
      if (i) {
        delete h.handle,
        h.events = {};
        for (c in i) for (d = 0, e = i[c].length; d < e; d++) f.event.add(b, c, i[c][d])
      }
      h.data && (h.data = f.extend({},
      h.data))
    }
  }
  function bi(a, b) {
    return f.nodeName(a, "table") ? a.getElementsByTagName("tbody")[0] || a.appendChild(a.ownerDocument.createElement("tbody")) : a
  }
  function U(a) {
    var b = V.split("|"),
    c = a.createDocumentFragment();
    if (c.createElement) while (b.length) c.createElement(b.pop());
    return c
  }
  function T(a, b, c) {
    b = b || 0;
    if (f.isFunction(b)) return f.grep(a,
    function(a, d) {
      var e = !!b.call(a, d, a);
      return e === c
    });
    if (b.nodeType) return f.grep(a,
    function(a, d) {
      return a === b === c
    });
    if (typeof b == "string") {
      var d = f.grep(a,
      function(a) {
        return a.nodeType === 1
      });
      if (O.test(b)) return f.filter(b, d, !c);
      b = f.filter(b, d)
    }
    return f.grep(a,
    function(a, d) {
      return f.inArray(a, b) >= 0 === c
    })
  }
  function S(a) {
    return ! a || !a.parentNode || a.parentNode.nodeType === 11
  }
  function K() {
    return ! 0
  }
  function J() {
    return ! 1
  }
  function n(a, b, c) {
    var d = b + "defer",
    e = b + "queue",
    g = b + "mark",
    h = f._data(a, d);
    h && (c === "queue" || !f._data(a, e)) && (c === "mark" || !f._data(a, g)) && setTimeout(function() { ! f._data(a, e) && !f._data(a, g) && (f.removeData(a, d, !0), h.fire())
    },
    0)
  }
  function m(a) {
    for (var b in a) {
      if (b === "data" && f.isEmptyObject(a[b])) continue;
      if (b !== "toJSON") return ! 1
    }
    return ! 0
  }
  function l(a, c, d) {
    if (d === b && a.nodeType === 1) {
      var e = "data-" + c.replace(k, "-$1").toLowerCase();
      d = a.getAttribute(e);
      if (typeof d == "string") {
        try {
          d = d === "true" ? !0 : d === "false" ? !1 : d === "null" ? null: f.isNumeric(d) ? +d: j.test(d) ? f.parseJSON(d) : d
        } catch(g) {}
        f.data(a, c, d)
      } else d = b
    }
    return d
  }
  function h(a) {
    var b = g[a] = {},
    c,
    d;
    a = a.split(/\s+/);
    for (c = 0, d = a.length; c < d; c++) b[a[c]] = !0;
    return b
  }
  var c = a.document,
  d = a.navigator,
  e = a.location,
  f = function() {
    function J() {
      if (!e.isReady) {
        try {
          c.documentElement.doScroll("left")
        } catch(a) {
          setTimeout(J, 1);
          return
        }
        e.ready()
      }
    }
    var e = function(a, b) {
      return new e.fn.init(a, b, h)
    },
    f = a.jQuery,
    g = a.$,
    h,
    i = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
    j = /\S/,
    k = /^\s+/,
    l = /\s+$/,
    m = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
    n = /^[\],:{}\s]*$/,
    o = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
    p = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
    q = /(?:^|:|,)(?:\s*\[)+/g,
    r = /(webkit)[ \/]([\w.]+)/,
    s = /(opera)(?:.*version)?[ \/]([\w.]+)/,
    t = /(msie) ([\w.]+)/,
    u = /(mozilla)(?:.*? rv:([\w.]+))?/,
    v = /-([a-z]|[0-9])/ig,
    w = /^-ms-/,
    x = function(a, b) {
      return (b + "").toUpperCase()
    },
    y = d.userAgent,
    z,
    A,
    B,
    C = Object.prototype.toString,
    D = Object.prototype.hasOwnProperty,
    E = Array.prototype.push,
    F = Array.prototype.slice,
    G = String.prototype.trim,
    H = Array.prototype.indexOf,
    I = {};
    e.fn = e.prototype = {
      constructor: e,
      init: function(a, d, f) {
        var g, h, j, k;
        if (!a) return this;
        if (a.nodeType) {
          this.context = this[0] = a,
          this.length = 1;
          return this
        }
        if (a === "body" && !d && c.body) {
          this.context = c,
          this[0] = c.body,
          this.selector = a,
          this.length = 1;
          return this
        }
        if (typeof a == "string") {
          a.charAt(0) !== "<" || a.charAt(a.length - 1) !== ">" || a.length < 3 ? g = i.exec(a) : g = [null, a, null];
          if (g && (g[1] || !d)) {
            if (g[1]) {
              d = d instanceof e ? d[0] : d,
              k = d ? d.ownerDocument || d: c,
              j = m.exec(a),
              j ? e.isPlainObject(d) ? (a = [c.createElement(j[1])], e.fn.attr.call(a, d, !0)) : a = [k.createElement(j[1])] : (j = e.buildFragment([g[1]], [k]), a = (j.cacheable ? e.clone(j.fragment) : j.fragment).childNodes);
              return e.merge(this, a)
            }
            h = c.getElementById(g[2]);
            if (h && h.parentNode) {
              if (h.id !== g[2]) return f.find(a);
              this.length = 1,
              this[0] = h
            }
            this.context = c,
            this.selector = a;
            return this
          }
          return ! d || d.jquery ? (d || f).find(a) : this.constructor(d).find(a)
        }
        if (e.isFunction(a)) return f.ready(a);
        a.selector !== b && (this.selector = a.selector, this.context = a.context);
        return e.makeArray(a, this)
      },
      selector: "",
      jquery: "1.7.2",
      length: 0,
      size: function() {
        return this.length
      },
      toArray: function() {
        return F.call(this, 0)
      },
      get: function(a) {
        return a == null ? this.toArray() : a < 0 ? this[this.length + a] : this[a]
      },
      pushStack: function(a, b, c) {
        var d = this.constructor();
        e.isArray(a) ? E.apply(d, a) : e.merge(d, a),
        d.prevObject = this,
        d.context = this.context,
        b === "find" ? d.selector = this.selector + (this.selector ? " ": "") + c: b && (d.selector = this.selector + "." + b + "(" + c + ")");
        return d
      },
      each: function(a, b) {
        return e.each(this, a, b)
      },
      ready: function(a) {
        e.bindReady(),
        A.add(a);
        return this
      },
      eq: function(a) {
        a = +a;
        return a === -1 ? this.slice(a) : this.slice(a, a + 1)
      },
      first: function() {
        return this.eq(0)
      },
      last: function() {
        return this.eq( - 1)
      },
      slice: function() {
        return this.pushStack(F.apply(this, arguments), "slice", F.call(arguments).join(","))
      },
      map: function(a) {
        return this.pushStack(e.map(this,
        function(b, c) {
          return a.call(b, c, b)
        }))
      },
      end: function() {
        return this.prevObject || this.constructor(null)
      },
      push: E,
      sort: [].sort,
      splice: [].splice
    },
    e.fn.init.prototype = e.fn,
    e.extend = e.fn.extend = function() {
      var a, c, d, f, g, h, i = arguments[0] || {},
      j = 1,
      k = arguments.length,
      l = !1;
      typeof i == "boolean" && (l = i, i = arguments[1] || {},
      j = 2),
      typeof i != "object" && !e.isFunction(i) && (i = {}),
      k === j && (i = this, --j);
      for (; j < k; j++) if ((a = arguments[j]) != null) for (c in a) {
        d = i[c],
        f = a[c];
        if (i === f) continue;
        l && f && (e.isPlainObject(f) || (g = e.isArray(f))) ? (g ? (g = !1, h = d && e.isArray(d) ? d: []) : h = d && e.isPlainObject(d) ? d: {},
        i[c] = e.extend(l, h, f)) : f !== b && (i[c] = f)
      }
      return i
    },
    e.extend({
      noConflict: function(b) {
        a.$ === e && (a.$ = g),
        b && a.jQuery === e && (a.jQuery = f);
        return e
      },
      isReady: !1,
      readyWait: 1,
      holdReady: function(a) {
        a ? e.readyWait++:e.ready(!0)
      },
      ready: function(a) {
        if (a === !0 && !--e.readyWait || a !== !0 && !e.isReady) {
          if (!c.body) return setTimeout(e.ready, 1);
          e.isReady = !0;
          if (a !== !0 && --e.readyWait > 0) return;
          A.fireWith(c, [e]),
          e.fn.trigger && e(c).trigger("ready").off("ready")
        }
      },
      bindReady: function() {
        if (!A) {
          A = e.Callbacks("once memory");
          if (c.readyState === "complete") return setTimeout(e.ready, 1);
          if (c.addEventListener) c.addEventListener("DOMContentLoaded", B, !1),
          a.addEventListener("load", e.ready, !1);
          else if (c.attachEvent) {
            c.attachEvent("onreadystatechange", B),
            a.attachEvent("onload", e.ready);
            var b = !1;
            try {
              b = a.frameElement == null
            } catch(d) {}
            c.documentElement.doScroll && b && J()
          }
        }
      },
      isFunction: function(a) {
        return e.type(a) === "function"
      },
      isArray: Array.isArray ||
      function(a) {
        return e.type(a) === "array"
      },
      isWindow: function(a) {
        return a != null && a == a.window
      },
      isNumeric: function(a) {
        return ! isNaN(parseFloat(a)) && isFinite(a)
      },
      type: function(a) {
        return a == null ? String(a) : I[C.call(a)] || "object"
      },
      isPlainObject: function(a) {
        if (!a || e.type(a) !== "object" || a.nodeType || e.isWindow(a)) return ! 1;
        try {
          if (a.constructor && !D.call(a, "constructor") && !D.call(a.constructor.prototype, "isPrototypeOf")) return ! 1
        } catch(c) {
          return ! 1
        }
        var d;
        for (d in a);
        return d === b || D.call(a, d)
      },
      isEmptyObject: function(a) {
        for (var b in a) return ! 1;
        return ! 0
      },
      error: function(a) {
        throw new Error(a)
      },
      parseJSON: function(b) {
        if (typeof b != "string" || !b) return null;
        b = e.trim(b);
        if (a.JSON && a.JSON.parse) return a.JSON.parse(b);
        if (n.test(b.replace(o, "@").replace(p, "]").replace(q, ""))) return (new Function("return " + b))();
        e.error("Invalid JSON: " + b)
      },
      parseXML: function(c) {
        if (typeof c != "string" || !c) return null;
        var d, f;
        try {
          a.DOMParser ? (f = new DOMParser, d = f.parseFromString(c, "text/xml")) : (d = new ActiveXObject("Microsoft.XMLDOM"), d.async = "false", d.loadXML(c))
        } catch(g) {
          d = b
        } (!d || !d.documentElement || d.getElementsByTagName("parsererror").length) && e.error("Invalid XML: " + c);
        return d
      },
      noop: function() {},
      globalEval: function(b) {
        b && j.test(b) && (a.execScript ||
        function(b) {
          a.eval.call(a, b)
        })(b)
      },
      camelCase: function(a) {
        return a.replace(w, "ms-").replace(v, x)
      },
      nodeName: function(a, b) {
        return a.nodeName && a.nodeName.toUpperCase() === b.toUpperCase()
      },
      each: function(a, c, d) {
        var f, g = 0,
        h = a.length,
        i = h === b || e.isFunction(a);
        if (d) {
          if (i) {
            for (f in a) if (c.apply(a[f], d) === !1) break
          } else for (; g < h;) if (c.apply(a[g++], d) === !1) break
        } else if (i) {
          for (f in a) if (c.call(a[f], f, a[f]) === !1) break
        } else for (; g < h;) if (c.call(a[g], g, a[g++]) === !1) break;
        return a
      },
      trim: G ?
      function(a) {
        return a == null ? "": G.call(a)
      }: function(a) {
        return a == null ? "": (a + "").replace(k, "").replace(l, "")
      },
      makeArray: function(a, b) {
        var c = b || [];
        if (a != null) {
          var d = e.type(a);
          a.length == null || d === "string" || d === "function" || d === "regexp" || e.isWindow(a) ? E.call(c, a) : e.merge(c, a)
        }
        return c
      },
      inArray: function(a, b, c) {
        var d;
        if (b) {
          if (H) return H.call(b, a, c);
          d = b.length,
          c = c ? c < 0 ? Math.max(0, d + c) : c: 0;
          for (; c < d; c++) if (c in b && b[c] === a) return c
        }
        return - 1
      },
      merge: function(a, c) {
        var d = a.length,
        e = 0;
        if (typeof c.length == "number") for (var f = c.length; e < f; e++) a[d++] = c[e];
        else while (c[e] !== b) a[d++] = c[e++];
        a.length = d;
        return a
      },
      grep: function(a, b, c) {
        var d = [],
        e;
        c = !!c;
        for (var f = 0,
        g = a.length; f < g; f++) e = !!b(a[f], f),
        c !== e && d.push(a[f]);
        return d
      },
      map: function(a, c, d) {
        var f, g, h = [],
        i = 0,
        j = a.length,
        k = a instanceof e || j !== b && typeof j == "number" && (j > 0 && a[0] && a[j - 1] || j === 0 || e.isArray(a));
        if (k) for (; i < j; i++) f = c(a[i], i, d),
        f != null && (h[h.length] = f);
        else for (g in a) f = c(a[g], g, d),
        f != null && (h[h.length] = f);
        return h.concat.apply([], h)
      },
      guid: 1,
      proxy: function(a, c) {
        if (typeof c == "string") {
          var d = a[c];
          c = a,
          a = d
        }
        if (!e.isFunction(a)) return b;
        var f = F.call(arguments, 2),
        g = function() {
          return a.apply(c, f.concat(F.call(arguments)))
        };
        g.guid = a.guid = a.guid || g.guid || e.guid++;
        return g
      },
      access: function(a, c, d, f, g, h, i) {
        var j, k = d == null,
        l = 0,
        m = a.length;
        if (d && typeof d == "object") {
          for (l in d) e.access(a, c, l, d[l], 1, h, f);
          g = 1
        } else if (f !== b) {
          j = i === b && e.isFunction(f),
          k && (j ? (j = c, c = function(a, b, c) {
            return j.call(e(a), c)
          }) : (c.call(a, f), c = null));
          if (c) for (; l < m; l++) c(a[l], d, j ? f.call(a[l], l, c(a[l], d)) : f, i);
          g = 1
        }
        return g ? a: k ? c.call(a) : m ? c(a[0], d) : h
      },
      now: function() {
        return (new Date).getTime()
      },
      uaMatch: function(a) {
        a = a.toLowerCase();
        var b = r.exec(a) || s.exec(a) || t.exec(a) || a.indexOf("compatible") < 0 && u.exec(a) || [];
        return {
          browser: b[1] || "",
          version: b[2] || "0"
        }
      },
      sub: function() {
        function a(b, c) {
          return new a.fn.init(b, c)
        }
        e.extend(!0, a, this),
        a.superclass = this,
        a.fn = a.prototype = this(),
        a.fn.constructor = a,
        a.sub = this.sub,
        a.fn.init = function(d, f) {
          f && f instanceof e && !(f instanceof a) && (f = a(f));
          return e.fn.init.call(this, d, f, b)
        },
        a.fn.init.prototype = a.fn;
        var b = a(c);
        return a
      },
      browser: {}
    }),
    e.each("Boolean Number String Function Array Date RegExp Object".split(" "),
    function(a, b) {
      I["[object " + b + "]"] = b.toLowerCase()
    }),
    z = e.uaMatch(y),
    z.browser && (e.browser[z.browser] = !0, e.browser.version = z.version),
    e.browser.webkit && (e.browser.safari = !0),
    j.test(" ") && (k = /^[\s\xA0]+/, l = /[\s\xA0]+$/),
    h = e(c),
    c.addEventListener ? B = function() {
      c.removeEventListener("DOMContentLoaded", B, !1),
      e.ready()
    }: c.attachEvent && (B = function() {
      c.readyState === "complete" && (c.detachEvent("onreadystatechange", B), e.ready())
    });
    return e
  } (),
  g = {};
  f.Callbacks = function(a) {
    a = a ? g[a] || h(a) : {};
    var c = [],
    d = [],
    e,
    i,
    j,
    k,
    l,
    m,
    n = function(b) {
      var d, e, g, h, i;
      for (d = 0, e = b.length; d < e; d++) g = b[d],
      h = f.type(g),
      h === "array" ? n(g) : h === "function" && (!a.unique || !p.has(g)) && c.push(g)
    },
    o = function(b, f) {
      f = f || [],
      e = !a.memory || [b, f],
      i = !0,
      j = !0,
      m = k || 0,
      k = 0,
      l = c.length;
      for (; c && m < l; m++) if (c[m].apply(b, f) === !1 && a.stopOnFalse) {
        e = !0;
        break
      }
      j = !1,
      c && (a.once ? e === !0 ? p.disable() : c = [] : d && d.length && (e = d.shift(), p.fireWith(e[0], e[1])))
    },
    p = {
      add: function() {
        if (c) {
          var a = c.length;
          n(arguments),
          j ? l = c.length: e && e !== !0 && (k = a, o(e[0], e[1]))
        }
        return this
      },
      remove: function() {
        if (c) {
          var b = arguments,
          d = 0,
          e = b.length;
          for (; d < e; d++) for (var f = 0; f < c.length; f++) if (b[d] === c[f]) {
            j && f <= l && (l--, f <= m && m--),
            c.splice(f--, 1);
            if (a.unique) break
          }
        }
        return this
      },
      has: function(a) {
        if (c) {
          var b = 0,
          d = c.length;
          for (; b < d; b++) if (a === c[b]) return ! 0
        }
        return ! 1
      },
      empty: function() {
        c = [];
        return this
      },
      disable: function() {
        c = d = e = b;
        return this
      },
      disabled: function() {
        return ! c
      },
      lock: function() {
        d = b,
        (!e || e === !0) && p.disable();
        return this
      },
      locked: function() {
        return ! d
      },
      fireWith: function(b, c) {
        d && (j ? a.once || d.push([b, c]) : (!a.once || !e) && o(b, c));
        return this
      },
      fire: function() {
        p.fireWith(this, arguments);
        return this
      },
      fired: function() {
        return !! i
      }
    };
    return p
  };
  var i = [].slice;
  f.extend({
    Deferred: function(a) {
      var b = f.Callbacks("once memory"),
      c = f.Callbacks("once memory"),
      d = f.Callbacks("memory"),
      e = "pending",
      g = {
        resolve: b,
        reject: c,
        notify: d
      },
      h = {
        done: b.add,
        fail: c.add,
        progress: d.add,
        state: function() {
          return e
        },
        isResolved: b.fired,
        isRejected: c.fired,
        then: function(a, b, c) {
          i.done(a).fail(b).progress(c);
          return this
        },
        always: function() {
          i.done.apply(i, arguments).fail.apply(i, arguments);
          return this
        },
        pipe: function(a, b, c) {
          return f.Deferred(function(d) {
            f.each({
              done: [a, "resolve"],
              fail: [b, "reject"],
              progress: [c, "notify"]
            },
            function(a, b) {
              var c = b[0],
              e = b[1],
              g;
              f.isFunction(c) ? i[a](function() {
                g = c.apply(this, arguments),
                g && f.isFunction(g.promise) ? g.promise().then(d.resolve, d.reject, d.notify) : d[e + "With"](this === i ? d: this, [g])
              }) : i[a](d[e])
            })
          }).promise()
        },
        promise: function(a) {
          if (a == null) a = h;
          else for (var b in h) a[b] = h[b];
          return a
        }
      },
      i = h.promise({}),
      j;
      for (j in g) i[j] = g[j].fire,
      i[j + "With"] = g[j].fireWith;
      i.done(function() {
        e = "resolved"
      },
      c.disable, d.lock).fail(function() {
        e = "rejected"
      },
      b.disable, d.lock),
      a && a.call(i, i);
      return i
    },
    when: function(a) {
      function m(a) {
        return function(b) {
          e[a] = arguments.length > 1 ? i.call(arguments, 0) : b,
          j.notifyWith(k, e)
        }
      }
      function l(a) {
        return function(c) {
          b[a] = arguments.length > 1 ? i.call(arguments, 0) : c,
          --g || j.resolveWith(j, b)
        }
      }
      var b = i.call(arguments, 0),
      c = 0,
      d = b.length,
      e = Array(d),
      g = d,
      h = d,
      j = d <= 1 && a && f.isFunction(a.promise) ? a: f.Deferred(),
      k = j.promise();
      if (d > 1) {
        for (; c < d; c++) b[c] && b[c].promise && f.isFunction(b[c].promise) ? b[c].promise().then(l(c), j.reject, m(c)) : --g;
        g || j.resolveWith(j, b)
      } else j !== a && j.resolveWith(j, d ? [a] : []);
      return k
    }
  }),
  f.support = function() {
    var b, d, e, g, h, i, j, k, l, m, n, o, p = c.createElement("div"),
    q = c.documentElement;
    p.setAttribute("className", "t"),
    p.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",
    d = p.getElementsByTagName("*"),
    e = p.getElementsByTagName("a")[0];
    if (!d || !d.length || !e) return {};
    g = c.createElement("select"),
    h = g.appendChild(c.createElement("option")),
    i = p.getElementsByTagName("input")[0],
    b = {
      leadingWhitespace: p.firstChild.nodeType === 3,
      tbody: !p.getElementsByTagName("tbody").length,
      htmlSerialize: !!p.getElementsByTagName("link").length,
      style: /top/.test(e.getAttribute("style")),
      hrefNormalized: e.getAttribute("href") === "/a",
      opacity: /^0.55/.test(e.style.opacity),
      cssFloat: !!e.style.cssFloat,
      checkOn: i.value === "on",
      optSelected: h.selected,
      getSetAttribute: p.className !== "t",
      enctype: !!c.createElement("form").enctype,
      html5Clone: c.createElement("nav").cloneNode(!0).outerHTML !== "<:nav></:nav>",
      submitBubbles: !0,
      changeBubbles: !0,
      focusinBubbles: !1,
      deleteExpando: !0,
      noCloneEvent: !0,
      inlineBlockNeedsLayout: !1,
      shrinkWrapBlocks: !1,
      reliableMarginRight: !0,
      pixelMargin: !0
    },
    f.boxModel = b.boxModel = c.compatMode === "CSS1Compat",
    i.checked = !0,
    b.noCloneChecked = i.cloneNode(!0).checked,
    g.disabled = !0,
    b.optDisabled = !h.disabled;
    try {
      delete p.test
    } catch(r) {
      b.deleteExpando = !1
    } ! p.addEventListener && p.attachEvent && p.fireEvent && (p.attachEvent("onclick",
    function() {
      b.noCloneEvent = !1
    }), p.cloneNode(!0).fireEvent("onclick")),
    i = c.createElement("input"),
    i.value = "t",
    i.setAttribute("type", "radio"),
    b.radioValue = i.value === "t",
    i.setAttribute("checked", "checked"),
    i.setAttribute("name", "t"),
    p.appendChild(i),
    j = c.createDocumentFragment(),
    j.appendChild(p.lastChild),
    b.checkClone = j.cloneNode(!0).cloneNode(!0).lastChild.checked,
    b.appendChecked = i.checked,
    j.removeChild(i),
    j.appendChild(p);
    if (p.attachEvent) for (n in {
      submit: 1,
      change: 1,
      focusin: 1
    }) m = "on" + n,
    o = m in p,
    o || (p.setAttribute(m, "return;"), o = typeof p[m] == "function"),
    b[n + "Bubbles"] = o;
    j.removeChild(p),
    j = g = h = p = i = null,
    f(function() {
      var d, e, g, h, i, j, l, m, n, q, r, s, t, u = c.getElementsByTagName("body")[0]; ! u || (m = 1, t = "padding:0;margin:0;border:", r = "position:absolute;top:0;left:0;width:1px;height:1px;", s = t + "0;visibility:hidden;", n = "style='" + r + t + "5px solid #000;", q = "<div " + n + "display:block;'><div style='" + t + "0;display:block;overflow:hidden;'></div></div>" + "<table " + n + "' cellpadding='0' cellspacing='0'>" + "<tr><td></td></tr></table>", d = c.createElement("div"), d.style.cssText = s + "width:0;height:0;position:static;top:0;margin-top:" + m + "px", u.insertBefore(d, u.firstChild), p = c.createElement("div"), d.appendChild(p), p.innerHTML = "<table><tr><td style='" + t + "0;display:none'></td><td>t</td></tr></table>", k = p.getElementsByTagName("td"), o = k[0].offsetHeight === 0, k[0].style.display = "", k[1].style.display = "none", b.reliableHiddenOffsets = o && k[0].offsetHeight === 0, a.getComputedStyle && (p.innerHTML = "", l = c.createElement("div"), l.style.width = "0", l.style.marginRight = "0", p.style.width = "2px", p.appendChild(l), b.reliableMarginRight = (parseInt((a.getComputedStyle(l, null) || {
        marginRight: 0
      }).marginRight, 10) || 0) === 0), typeof p.style.zoom != "undefined" && (p.innerHTML = "", p.style.width = p.style.padding = "1px", p.style.border = 0, p.style.overflow = "hidden", p.style.display = "inline", p.style.zoom = 1, b.inlineBlockNeedsLayout = p.offsetWidth === 3, p.style.display = "block", p.style.overflow = "visible", p.innerHTML = "<div style='width:5px;'></div>", b.shrinkWrapBlocks = p.offsetWidth !== 3), p.style.cssText = r + s, p.innerHTML = q, e = p.firstChild, g = e.firstChild, i = e.nextSibling.firstChild.firstChild, j = {
        doesNotAddBorder: g.offsetTop !== 5,
        doesAddBorderForTableAndCells: i.offsetTop === 5
      },
      g.style.position = "fixed", g.style.top = "20px", j.fixedPosition = g.offsetTop === 20 || g.offsetTop === 15, g.style.position = g.style.top = "", e.style.overflow = "hidden", e.style.position = "relative", j.subtractsBorderForOverflowNotVisible = g.offsetTop === -5, j.doesNotIncludeMarginInBodyOffset = u.offsetTop !== m, a.getComputedStyle && (p.style.marginTop = "1%", b.pixelMargin = (a.getComputedStyle(p, null) || {
        marginTop: 0
      }).marginTop !== "1%"), typeof d.style.zoom != "undefined" && (d.style.zoom = 1), u.removeChild(d), l = p = d = null, f.extend(b, j))
    });
    return b
  } ();
  var j = /^(?:\{.*\}|\[.*\])$/,
  k = /([A-Z])/g;
  f.extend({
    cache: {},
    uuid: 0,
    expando: "jQuery" + (f.fn.jquery + Math.random()).replace(/\D/g, ""),
    noData: {
      embed: !0,
      object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
      applet: !0
    },
    hasData: function(a) {
      a = a.nodeType ? f.cache[a[f.expando]] : a[f.expando];
      return !! a && !m(a)
    },
    data: function(a, c, d, e) {
      if ( !! f.acceptData(a)) {
        var g, h, i, j = f.expando,
        k = typeof c == "string",
        l = a.nodeType,
        m = l ? f.cache: a,
        n = l ? a[j] : a[j] && j,
        o = c === "events";
        if ((!n || !m[n] || !o && !e && !m[n].data) && k && d === b) return;
        n || (l ? a[j] = n = ++f.uuid: n = j),
        m[n] || (m[n] = {},
        l || (m[n].toJSON = f.noop));
        if (typeof c == "object" || typeof c == "function") e ? m[n] = f.extend(m[n], c) : m[n].data = f.extend(m[n].data, c);
        g = h = m[n],
        e || (h.data || (h.data = {}), h = h.data),
        d !== b && (h[f.camelCase(c)] = d);
        if (o && !h[c]) return g.events;
        k ? (i = h[c], i == null && (i = h[f.camelCase(c)])) : i = h;
        return i
      }
    },
    removeData: function(a, b, c) {
      if ( !! f.acceptData(a)) {
        var d, e, g, h = f.expando,
        i = a.nodeType,
        j = i ? f.cache: a,
        k = i ? a[h] : h;
        if (!j[k]) return;
        if (b) {
          d = c ? j[k] : j[k].data;
          if (d) {
            f.isArray(b) || (b in d ? b = [b] : (b = f.camelCase(b), b in d ? b = [b] : b = b.split(" ")));
            for (e = 0, g = b.length; e < g; e++) delete d[b[e]];
            if (! (c ? m: f.isEmptyObject)(d)) return
          }
        }
        if (!c) {
          delete j[k].data;
          if (!m(j[k])) return
        }
        f.support.deleteExpando || !j.setInterval ? delete j[k] : j[k] = null,
        i && (f.support.deleteExpando ? delete a[h] : a.removeAttribute ? a.removeAttribute(h) : a[h] = null)
      }
    },
    _data: function(a, b, c) {
      return f.data(a, b, c, !0)
    },
    acceptData: function(a) {
      if (a.nodeName) {
        var b = f.noData[a.nodeName.toLowerCase()];
        if (b) return b !== !0 && a.getAttribute("classid") === b
      }
      return ! 0
    }
  }),
  f.fn.extend({
    data: function(a, c) {
      var d, e, g, h, i, j = this[0],
      k = 0,
      m = null;
      if (a === b) {
        if (this.length) {
          m = f.data(j);
          if (j.nodeType === 1 && !f._data(j, "parsedAttrs")) {
            g = j.attributes;
            for (i = g.length; k < i; k++) h = g[k].name,
            h.indexOf("data-") === 0 && (h = f.camelCase(h.substring(5)), l(j, h, m[h]));
            f._data(j, "parsedAttrs", !0)
          }
        }
        return m
      }
      if (typeof a == "object") return this.each(function() {
        f.data(this, a)
      });
      d = a.split(".", 2),
      d[1] = d[1] ? "." + d[1] : "",
      e = d[1] + "!";
      return f.access(this,
      function(c) {
        if (c === b) {
          m = this.triggerHandler("getData" + e, [d[0]]),
          m === b && j && (m = f.data(j, a), m = l(j, a, m));
          return m === b && d[1] ? this.data(d[0]) : m
        }
        d[1] = c,
        this.each(function() {
          var b = f(this);
          b.triggerHandler("setData" + e, d),
          f.data(this, a, c),
          b.triggerHandler("changeData" + e, d)
        })
      },
      null, c, arguments.length > 1, null, !1)
    },
    removeData: function(a) {
      return this.each(function() {
        f.removeData(this, a)
      })
    }
  }),
  f.extend({
    _mark: function(a, b) {
      a && (b = (b || "fx") + "mark", f._data(a, b, (f._data(a, b) || 0) + 1))
    },
    _unmark: function(a, b, c) {
      a !== !0 && (c = b, b = a, a = !1);
      if (b) {
        c = c || "fx";
        var d = c + "mark",
        e = a ? 0 : (f._data(b, d) || 1) - 1;
        e ? f._data(b, d, e) : (f.removeData(b, d, !0), n(b, c, "mark"))
      }
    },
    queue: function(a, b, c) {
      var d;
      if (a) {
        b = (b || "fx") + "queue",
        d = f._data(a, b),
        c && (!d || f.isArray(c) ? d = f._data(a, b, f.makeArray(c)) : d.push(c));
        return d || []
      }
    },
    dequeue: function(a, b) {
      b = b || "fx";
      var c = f.queue(a, b),
      d = c.shift(),
      e = {};
      d === "inprogress" && (d = c.shift()),
      d && (b === "fx" && c.unshift("inprogress"), f._data(a, b + ".run", e), d.call(a,
      function() {
        f.dequeue(a, b)
      },
      e)),
      c.length || (f.removeData(a, b + "queue " + b + ".run", !0), n(a, b, "queue"))
    }
  }),
  f.fn.extend({
    queue: function(a, c) {
      var d = 2;
      typeof a != "string" && (c = a, a = "fx", d--);
      if (arguments.length < d) return f.queue(this[0], a);
      return c === b ? this: this.each(function() {
        var b = f.queue(this, a, c);
        a === "fx" && b[0] !== "inprogress" && f.dequeue(this, a)
      })
    },
    dequeue: function(a) {
      return this.each(function() {
        f.dequeue(this, a)
      })
    },
    delay: function(a, b) {
      a = f.fx ? f.fx.speeds[a] || a: a,
      b = b || "fx";
      return this.queue(b,
      function(b, c) {
        var d = setTimeout(b, a);
        c.stop = function() {
          clearTimeout(d)
        }
      })
    },
    clearQueue: function(a) {
      return this.queue(a || "fx", [])
    },
    promise: function(a, c) {
      function m() {--h || d.resolveWith(e, [e])
      }
      typeof a != "string" && (c = a, a = b),
      a = a || "fx";
      var d = f.Deferred(),
      e = this,
      g = e.length,
      h = 1,
      i = a + "defer",
      j = a + "queue",
      k = a + "mark",
      l;
      while (g--) if (l = f.data(e[g], i, b, !0) || (f.data(e[g], j, b, !0) || f.data(e[g], k, b, !0)) && f.data(e[g], i, f.Callbacks("once memory"), !0)) h++,
      l.add(m);
      m();
      return d.promise(c)
    }
  });
  var o = /[\n\t\r]/g,
  p = /\s+/,
  q = /\r/g,
  r = /^(?:button|input)$/i,
  s = /^(?:button|input|object|select|textarea)$/i,
  t = /^a(?:rea)?$/i,
  u = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
  v = f.support.getSetAttribute,
  w, x, y;
  f.fn.extend({
    attr: function(a, b) {
      return f.access(this, f.attr, a, b, arguments.length > 1)
    },
    removeAttr: function(a) {
      return this.each(function() {
        f.removeAttr(this, a)
      })
    },
    prop: function(a, b) {
      return f.access(this, f.prop, a, b, arguments.length > 1)
    },
    removeProp: function(a) {
      a = f.propFix[a] || a;
      return this.each(function() {
        try {
          this[a] = b,
          delete this[a]
        } catch(c) {}
      })
    },
    addClass: function(a) {
      var b, c, d, e, g, h, i;
      if (f.isFunction(a)) return this.each(function(b) {
        f(this).addClass(a.call(this, b, this.className))
      });
      if (a && typeof a == "string") {
        b = a.split(p);
        for (c = 0, d = this.length; c < d; c++) {
          e = this[c];
          if (e.nodeType === 1) if (!e.className && b.length === 1) e.className = a;
          else {
            g = " " + e.className + " ";
            for (h = 0, i = b.length; h < i; h++)~g.indexOf(" " + b[h] + " ") || (g += b[h] + " ");
            e.className = f.trim(g)
          }
        }
      }
      return this
    },
    removeClass: function(a) {
      var c, d, e, g, h, i, j;
      if (f.isFunction(a)) return this.each(function(b) {
        f(this).removeClass(a.call(this, b, this.className))
      });
      if (a && typeof a == "string" || a === b) {
        c = (a || "").split(p);
        for (d = 0, e = this.length; d < e; d++) {
          g = this[d];
          if (g.nodeType === 1 && g.className) if (a) {
            h = (" " + g.className + " ").replace(o, " ");
            for (i = 0, j = c.length; i < j; i++) h = h.replace(" " + c[i] + " ", " ");
            g.className = f.trim(h)
          } else g.className = ""
        }
      }
      return this
    },
    toggleClass: function(a, b) {
      var c = typeof a,
      d = typeof b == "boolean";
      if (f.isFunction(a)) return this.each(function(c) {
        f(this).toggleClass(a.call(this, c, this.className, b), b)
      });
      return this.each(function() {
        if (c === "string") {
          var e, g = 0,
          h = f(this),
          i = b,
          j = a.split(p);
          while (e = j[g++]) i = d ? i: !h.hasClass(e),
          h[i ? "addClass": "removeClass"](e)
        } else if (c === "undefined" || c === "boolean") this.className && f._data(this, "__className__", this.className),
        this.className = this.className || a === !1 ? "": f._data(this, "__className__") || ""
      })
    },
    hasClass: function(a) {
      var b = " " + a + " ",
      c = 0,
      d = this.length;
      for (; c < d; c++) if (this[c].nodeType === 1 && (" " + this[c].className + " ").replace(o, " ").indexOf(b) > -1) return ! 0;
      return ! 1
    },
    val: function(a) {
      var c, d, e, g = this[0]; {
        if ( !! arguments.length) {
          e = f.isFunction(a);
          return this.each(function(d) {
            var g = f(this),
            h;
            if (this.nodeType === 1) {
              e ? h = a.call(this, d, g.val()) : h = a,
              h == null ? h = "": typeof h == "number" ? h += "": f.isArray(h) && (h = f.map(h,
              function(a) {
                return a == null ? "": a + ""
              })),
              c = f.valHooks[this.type] || f.valHooks[this.nodeName.toLowerCase()];
              if (!c || !("set" in c) || c.set(this, h, "value") === b) this.value = h
            }
          })
        }
        if (g) {
          c = f.valHooks[g.type] || f.valHooks[g.nodeName.toLowerCase()];
          if (c && "get" in c && (d = c.get(g, "value")) !== b) return d;
          d = g.value;
          return typeof d == "string" ? d.replace(q, "") : d == null ? "": d
        }
      }
    }
  }),
  f.extend({
    valHooks: {
      option: {
        get: function(a) {
          var b = a.attributes.value;
          return ! b || b.specified ? a.value: a.text
        }
      },
      select: {
        get: function(a) {
          var b, c, d, e, g = a.selectedIndex,
          h = [],
          i = a.options,
          j = a.type === "select-one";
          if (g < 0) return null;
          c = j ? g: 0,
          d = j ? g + 1 : i.length;
          for (; c < d; c++) {
            e = i[c];
            if (e.selected && (f.support.optDisabled ? !e.disabled: e.getAttribute("disabled") === null) && (!e.parentNode.disabled || !f.nodeName(e.parentNode, "optgroup"))) {
              b = f(e).val();
              if (j) return b;
              h.push(b)
            }
          }
          if (j && !h.length && i.length) return f(i[g]).val();
          return h
        },
        set: function(a, b) {
          var c = f.makeArray(b);
          f(a).find("option").each(function() {
            this.selected = f.inArray(f(this).val(), c) >= 0
          }),
          c.length || (a.selectedIndex = -1);
          return c
        }
      }
    },
    attrFn: {
      val: !0,
      css: !0,
      html: !0,
      text: !0,
      data: !0,
      width: !0,
      height: !0,
      offset: !0
    },
    attr: function(a, c, d, e) {
      var g, h, i, j = a.nodeType;
      if ( !! a && j !== 3 && j !== 8 && j !== 2) {
        if (e && c in f.attrFn) return f(a)[c](d);
        if (typeof a.getAttribute == "undefined") return f.prop(a, c, d);
        i = j !== 1 || !f.isXMLDoc(a),
        i && (c = c.toLowerCase(), h = f.attrHooks[c] || (u.test(c) ? x: w));
        if (d !== b) {
          if (d === null) {
            f.removeAttr(a, c);
            return
          }
          if (h && "set" in h && i && (g = h.set(a, d, c)) !== b) return g;
          a.setAttribute(c, "" + d);
          return d
        }
        if (h && "get" in h && i && (g = h.get(a, c)) !== null) return g;
        g = a.getAttribute(c);
        return g === null ? b: g
      }
    },
    removeAttr: function(a, b) {
      var c, d, e, g, h, i = 0;
      if (b && a.nodeType === 1) {
        d = b.toLowerCase().split(p),
        g = d.length;
        for (; i < g; i++) e = d[i],
        e && (c = f.propFix[e] || e, h = u.test(e), h || f.attr(a, e, ""), a.removeAttribute(v ? e: c), h && c in a && (a[c] = !1))
      }
    },
    attrHooks: {
      type: {
        set: function(a, b) {
          if (r.test(a.nodeName) && a.parentNode) f.error("type property can't be changed");
          else if (!f.support.radioValue && b === "radio" && f.nodeName(a, "input")) {
            var c = a.value;
            a.setAttribute("type", b),
            c && (a.value = c);
            return b
          }
        }
      },
      value: {
        get: function(a, b) {
          if (w && f.nodeName(a, "button")) return w.get(a, b);
          return b in a ? a.value: null
        },
        set: function(a, b, c) {
          if (w && f.nodeName(a, "button")) return w.set(a, b, c);
          a.value = b
        }
      }
    },
    propFix: {
      tabindex: "tabIndex",
      readonly: "readOnly",
      "for": "htmlFor",
      "class": "className",
      maxlength: "maxLength",
      cellspacing: "cellSpacing",
      cellpadding: "cellPadding",
      rowspan: "rowSpan",
      colspan: "colSpan",
      usemap: "useMap",
      frameborder: "frameBorder",
      contenteditable: "contentEditable"
    },
    prop: function(a, c, d) {
      var e, g, h, i = a.nodeType;
      if ( !! a && i !== 3 && i !== 8 && i !== 2) {
        h = i !== 1 || !f.isXMLDoc(a),
        h && (c = f.propFix[c] || c, g = f.propHooks[c]);
        return d !== b ? g && "set" in g && (e = g.set(a, d, c)) !== b ? e: a[c] = d: g && "get" in g && (e = g.get(a, c)) !== null ? e: a[c]
      }
    },
    propHooks: {
      tabIndex: {
        get: function(a) {
          var c = a.getAttributeNode("tabindex");
          return c && c.specified ? parseInt(c.value, 10) : s.test(a.nodeName) || t.test(a.nodeName) && a.href ? 0 : b
        }
      }
    }
  }),
  f.attrHooks.tabindex = f.propHooks.tabIndex,
  x = {
    get: function(a, c) {
      var d, e = f.prop(a, c);
      return e === !0 || typeof e != "boolean" && (d = a.getAttributeNode(c)) && d.nodeValue !== !1 ? c.toLowerCase() : b
    },
    set: function(a, b, c) {
      var d;
      b === !1 ? f.removeAttr(a, c) : (d = f.propFix[c] || c, d in a && (a[d] = !0), a.setAttribute(c, c.toLowerCase()));
      return c
    }
  },
  v || (y = {
    name: !0,
    id: !0,
    coords: !0
  },
  w = f.valHooks.button = {
    get: function(a, c) {
      var d;
      d = a.getAttributeNode(c);
      return d && (y[c] ? d.nodeValue !== "": d.specified) ? d.nodeValue: b
    },
    set: function(a, b, d) {
      var e = a.getAttributeNode(d);
      e || (e = c.createAttribute(d), a.setAttributeNode(e));
      return e.nodeValue = b + ""
    }
  },
  f.attrHooks.tabindex.set = w.set, f.each(["width", "height"],
  function(a, b) {
    f.attrHooks[b] = f.extend(f.attrHooks[b], {
      set: function(a, c) {
        if (c === "") {
          a.setAttribute(b, "auto");
          return c
        }
      }
    })
  }), f.attrHooks.contenteditable = {
    get: w.get,
    set: function(a, b, c) {
      b === "" && (b = "false"),
      w.set(a, b, c)
    }
  }),
  f.support.hrefNormalized || f.each(["href", "src", "width", "height"],
  function(a, c) {
    f.attrHooks[c] = f.extend(f.attrHooks[c], {
      get: function(a) {
        var d = a.getAttribute(c, 2);
        return d === null ? b: d
      }
    })
  }),
  f.support.style || (f.attrHooks.style = {
    get: function(a) {
      return a.style.cssText.toLowerCase() || b
    },
    set: function(a, b) {
      return a.style.cssText = "" + b
    }
  }),
  f.support.optSelected || (f.propHooks.selected = f.extend(f.propHooks.selected, {
    get: function(a) {
      var b = a.parentNode;
      b && (b.selectedIndex, b.parentNode && b.parentNode.selectedIndex);
      return null
    }
  })),
  f.support.enctype || (f.propFix.enctype = "encoding"),
  f.support.checkOn || f.each(["radio", "checkbox"],
  function() {
    f.valHooks[this] = {
      get: function(a) {
        return a.getAttribute("value") === null ? "on": a.value
      }
    }
  }),
  f.each(["radio", "checkbox"],
  function() {
    f.valHooks[this] = f.extend(f.valHooks[this], {
      set: function(a, b) {
        if (f.isArray(b)) return a.checked = f.inArray(f(a).val(), b) >= 0
      }
    })
  });
  var z = /^(?:textarea|input|select)$/i,
  A = /^([^\.]*)?(?:\.(.+))?$/,
  B = /(?:^|\s)hover(\.\S+)?\b/,
  C = /^key/,
  D = /^(?:mouse|contextmenu)|click/,
  E = /^(?:focusinfocus|focusoutblur)$/,
  F = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
  G = function(a) {
    var b = F.exec(a);
    b && (b[1] = (b[1] || "").toLowerCase(), b[3] = b[3] && new RegExp("(?:^|\\s)" + b[3] + "(?:\\s|$)"));
    return b
  },
  H = function(a, b) {
    var c = a.attributes || {};
    return (!b[1] || a.nodeName.toLowerCase() === b[1]) && (!b[2] || (c.id || {}).value === b[2]) && (!b[3] || b[3].test((c["class"] || {}).value))
  },
  I = function(a) {
    return f.event.special.hover ? a: a.replace(B, "mouseenter$1 mouseleave$1")
  };
  f.event = {
    add: function(a, c, d, e, g) {
      var h, i, j, k, l, m, n, o, p, q, r, s;
      if (! (a.nodeType === 3 || a.nodeType === 8 || !c || !d || !(h = f._data(a)))) {
        d.handler && (p = d, d = p.handler, g = p.selector),
        d.guid || (d.guid = f.guid++),
        j = h.events,
        j || (h.events = j = {}),
        i = h.handle,
        i || (h.handle = i = function(a) {
          return typeof f != "undefined" && (!a || f.event.triggered !== a.type) ? f.event.dispatch.apply(i.elem, arguments) : b
        },
        i.elem = a),
        c = f.trim(I(c)).split(" ");
        for (k = 0; k < c.length; k++) {
          l = A.exec(c[k]) || [],
          m = l[1],
          n = (l[2] || "").split(".").sort(),
          s = f.event.special[m] || {},
          m = (g ? s.delegateType: s.bindType) || m,
          s = f.event.special[m] || {},
          o = f.extend({
            type: m,
            origType: l[1],
            data: e,
            handler: d,
            guid: d.guid,
            selector: g,
            quick: g && G(g),
            namespace: n.join(".")
          },
          p),
          r = j[m];
          if (!r) {
            r = j[m] = [],
            r.delegateCount = 0;
            if (!s.setup || s.setup.call(a, e, n, i) === !1) a.addEventListener ? a.addEventListener(m, i, !1) : a.attachEvent && a.attachEvent("on" + m, i)
          }
          s.add && (s.add.call(a, o), o.handler.guid || (o.handler.guid = d.guid)),
          g ? r.splice(r.delegateCount++, 0, o) : r.push(o),
          f.event.global[m] = !0
        }
        a = null
      }
    },
    global: {},
    remove: function(a, b, c, d, e) {
      var g = f.hasData(a) && f._data(a),
      h,
      i,
      j,
      k,
      l,
      m,
      n,
      o,
      p,
      q,
      r,
      s;
      if ( !! g && !!(o = g.events)) {
        b = f.trim(I(b || "")).split(" ");
        for (h = 0; h < b.length; h++) {
          i = A.exec(b[h]) || [],
          j = k = i[1],
          l = i[2];
          if (!j) {
            for (j in o) f.event.remove(a, j + b[h], c, d, !0);
            continue
          }
          p = f.event.special[j] || {},
          j = (d ? p.delegateType: p.bindType) || j,
          r = o[j] || [],
          m = r.length,
          l = l ? new RegExp("(^|\\.)" + l.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
          for (n = 0; n < r.length; n++) s = r[n],
          (e || k === s.origType) && (!c || c.guid === s.guid) && (!l || l.test(s.namespace)) && (!d || d === s.selector || d === "**" && s.selector) && (r.splice(n--, 1), s.selector && r.delegateCount--, p.remove && p.remove.call(a, s));
          r.length === 0 && m !== r.length && ((!p.teardown || p.teardown.call(a, l) === !1) && f.removeEvent(a, j, g.handle), delete o[j])
        }
        f.isEmptyObject(o) && (q = g.handle, q && (q.elem = null), f.removeData(a, ["events", "handle"], !0))
      }
    },
    customEvent: {
      getData: !0,
      setData: !0,
      changeData: !0
    },
    trigger: function(c, d, e, g) {
      if (!e || e.nodeType !== 3 && e.nodeType !== 8) {
        var h = c.type || c,
        i = [],
        j,
        k,
        l,
        m,
        n,
        o,
        p,
        q,
        r,
        s;
        if (E.test(h + f.event.triggered)) return;
        h.indexOf("!") >= 0 && (h = h.slice(0, -1), k = !0),
        h.indexOf(".") >= 0 && (i = h.split("."), h = i.shift(), i.sort());
        if ((!e || f.event.customEvent[h]) && !f.event.global[h]) return;
        c = typeof c == "object" ? c[f.expando] ? c: new f.Event(h, c) : new f.Event(h),
        c.type = h,
        c.isTrigger = !0,
        c.exclusive = k,
        c.namespace = i.join("."),
        c.namespace_re = c.namespace ? new RegExp("(^|\\.)" + i.join("\\.(?:.*\\.)?") + "(\\.|$)") : null,
        o = h.indexOf(":") < 0 ? "on" + h: "";
        if (!e) {
          j = f.cache;
          for (l in j) j[l].events && j[l].events[h] && f.event.trigger(c, d, j[l].handle.elem, !0);
          return
        }
        c.result = b,
        c.target || (c.target = e),
        d = d != null ? f.makeArray(d) : [],
        d.unshift(c),
        p = f.event.special[h] || {};
        if (p.trigger && p.trigger.apply(e, d) === !1) return;
        r = [[e, p.bindType || h]];
        if (!g && !p.noBubble && !f.isWindow(e)) {
          s = p.delegateType || h,
          m = E.test(s + h) ? e: e.parentNode,
          n = null;
          for (; m; m = m.parentNode) r.push([m, s]),
          n = m;
          n && n === e.ownerDocument && r.push([n.defaultView || n.parentWindow || a, s])
        }
        for (l = 0; l < r.length && !c.isPropagationStopped(); l++) m = r[l][0],
        c.type = r[l][1],
        q = (f._data(m, "events") || {})[c.type] && f._data(m, "handle"),
        q && q.apply(m, d),
        q = o && m[o],
        q && f.acceptData(m) && q.apply(m, d) === !1 && c.preventDefault();
        c.type = h,
        !g && !c.isDefaultPrevented() && (!p._default || p._default.apply(e.ownerDocument, d) === !1) && (h !== "click" || !f.nodeName(e, "a")) && f.acceptData(e) && o && e[h] && (h !== "focus" && h !== "blur" || c.target.offsetWidth !== 0) && !f.isWindow(e) && (n = e[o], n && (e[o] = null), f.event.triggered = h, e[h](), f.event.triggered = b, n && (e[o] = n));
        return c.result
      }
    },
    dispatch: function(c) {
      c = f.event.fix(c || a.event);
      var d = (f._data(this, "events") || {})[c.type] || [],
      e = d.delegateCount,
      g = [].slice.call(arguments, 0),
      h = !c.exclusive && !c.namespace,
      i = f.event.special[c.type] || {},
      j = [],
      k,
      l,
      m,
      n,
      o,
      p,
      q,
      r,
      s,
      t,
      u;
      g[0] = c,
      c.delegateTarget = this;
      if (!i.preDispatch || i.preDispatch.call(this, c) !== !1) {
        if (e && (!c.button || c.type !== "click")) {
          n = f(this),
          n.context = this.ownerDocument || this;
          for (m = c.target; m != this; m = m.parentNode || this) if (m.disabled !== !0) {
            p = {},
            r = [],
            n[0] = m;
            for (k = 0; k < e; k++) s = d[k],
            t = s.selector,
            p[t] === b && (p[t] = s.quick ? H(m, s.quick) : n.is(t)),
            p[t] && r.push(s);
            r.length && j.push({
              elem: m,
              matches: r
            })
          }
        }
        d.length > e && j.push({
          elem: this,
          matches: d.slice(e)
        });
        for (k = 0; k < j.length && !c.isPropagationStopped(); k++) {
          q = j[k],
          c.currentTarget = q.elem;
          for (l = 0; l < q.matches.length && !c.isImmediatePropagationStopped(); l++) {
            s = q.matches[l];
            if (h || !c.namespace && !s.namespace || c.namespace_re && c.namespace_re.test(s.namespace)) c.data = s.data,
            c.handleObj = s,
            o = ((f.event.special[s.origType] || {}).handle || s.handler).apply(q.elem, g),
            o !== b && (c.result = o, o === !1 && (c.preventDefault(), c.stopPropagation()))
          }
        }
        i.postDispatch && i.postDispatch.call(this, c);
        return c.result
      }
    },
    props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
    fixHooks: {},
    keyHooks: {
      props: "char charCode key keyCode".split(" "),
      filter: function(a, b) {
        a.which == null && (a.which = b.charCode != null ? b.charCode: b.keyCode);
        return a
      }
    },
    mouseHooks: {
      props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
      filter: function(a, d) {
        var e, f, g, h = d.button,
        i = d.fromElement;
        a.pageX == null && d.clientX != null && (e = a.target.ownerDocument || c, f = e.documentElement, g = e.body, a.pageX = d.clientX + (f && f.scrollLeft || g && g.scrollLeft || 0) - (f && f.clientLeft || g && g.clientLeft || 0), a.pageY = d.clientY + (f && f.scrollTop || g && g.scrollTop || 0) - (f && f.clientTop || g && g.clientTop || 0)),
        !a.relatedTarget && i && (a.relatedTarget = i === a.target ? d.toElement: i),
        !a.which && h !== b && (a.which = h & 1 ? 1 : h & 2 ? 3 : h & 4 ? 2 : 0);
        return a
      }
    },
    fix: function(a) {
      if (a[f.expando]) return a;
      var d, e, g = a,
      h = f.event.fixHooks[a.type] || {},
      i = h.props ? this.props.concat(h.props) : this.props;
      a = f.Event(g);
      for (d = i.length; d;) e = i[--d],
      a[e] = g[e];
      a.target || (a.target = g.srcElement || c),
      a.target.nodeType === 3 && (a.target = a.target.parentNode),
      a.metaKey === b && (a.metaKey = a.ctrlKey);
      return h.filter ? h.filter(a, g) : a
    },
    special: {
      ready: {
        setup: f.bindReady
      },
      load: {
        noBubble: !0
      },
      focus: {
        delegateType: "focusin"
      },
      blur: {
        delegateType: "focusout"
      },
      beforeunload: {
        setup: function(a, b, c) {
          f.isWindow(this) && (this.onbeforeunload = c)
        },
        teardown: function(a, b) {
          this.onbeforeunload === b && (this.onbeforeunload = null)
        }
      }
    },
    simulate: function(a, b, c, d) {
      var e = f.extend(new f.Event, c, {
        type: a,
        isSimulated: !0,
        originalEvent: {}
      });
      d ? f.event.trigger(e, null, b) : f.event.dispatch.call(b, e),
      e.isDefaultPrevented() && c.preventDefault()
    }
  },
  f.event.handle = f.event.dispatch,
  f.removeEvent = c.removeEventListener ?
  function(a, b, c) {
    a.removeEventListener && a.removeEventListener(b, c, !1)
  }: function(a, b, c) {
    a.detachEvent && a.detachEvent("on" + b, c)
  },
  f.Event = function(a, b) {
    if (! (this instanceof f.Event)) return new f.Event(a, b);
    a && a.type ? (this.originalEvent = a, this.type = a.type, this.isDefaultPrevented = a.defaultPrevented || a.returnValue === !1 || a.getPreventDefault && a.getPreventDefault() ? K: J) : this.type = a,
    b && f.extend(this, b),
    this.timeStamp = a && a.timeStamp || f.now(),
    this[f.expando] = !0
  },
  f.Event.prototype = {
    preventDefault: function() {
      this.isDefaultPrevented = K;
      var a = this.originalEvent; ! a || (a.preventDefault ? a.preventDefault() : a.returnValue = !1)
    },
    stopPropagation: function() {
      this.isPropagationStopped = K;
      var a = this.originalEvent; ! a || (a.stopPropagation && a.stopPropagation(), a.cancelBubble = !0)
    },
    stopImmediatePropagation: function() {
      this.isImmediatePropagationStopped = K,
      this.stopPropagation()
    },
    isDefaultPrevented: J,
    isPropagationStopped: J,
    isImmediatePropagationStopped: J
  },
  f.each({
    mouseenter: "mouseover",
    mouseleave: "mouseout"
  },
  function(a, b) {
    f.event.special[a] = {
      delegateType: b,
      bindType: b,
      handle: function(a) {
        var c = this,
        d = a.relatedTarget,
        e = a.handleObj,
        g = e.selector,
        h;
        if (!d || d !== c && !f.contains(c, d)) a.type = e.origType,
        h = e.handler.apply(this, arguments),
        a.type = b;
        return h
      }
    }
  }),
  f.support.submitBubbles || (f.event.special.submit = {
    setup: function() {
      if (f.nodeName(this, "form")) return ! 1;
      f.event.add(this, "click._submit keypress._submit",
      function(a) {
        var c = a.target,
        d = f.nodeName(c, "input") || f.nodeName(c, "button") ? c.form: b;
        d && !d._submit_attached && (f.event.add(d, "submit._submit",
        function(a) {
          a._submit_bubble = !0
        }), d._submit_attached = !0)
      })
    },
    postDispatch: function(a) {
      a._submit_bubble && (delete a._submit_bubble, this.parentNode && !a.isTrigger && f.event.simulate("submit", this.parentNode, a, !0))
    },
    teardown: function() {
      if (f.nodeName(this, "form")) return ! 1;
      f.event.remove(this, "._submit")
    }
  }),
  f.support.changeBubbles || (f.event.special.change = {
    setup: function() {
      if (z.test(this.nodeName)) {
        if (this.type === "checkbox" || this.type === "radio") f.event.add(this, "propertychange._change",
        function(a) {
          a.originalEvent.propertyName === "checked" && (this._just_changed = !0)
        }),
        f.event.add(this, "click._change",
        function(a) {
          this._just_changed && !a.isTrigger && (this._just_changed = !1, f.event.simulate("change", this, a, !0))
        });
        return ! 1
      }
      f.event.add(this, "beforeactivate._change",
      function(a) {
        var b = a.target;
        z.test(b.nodeName) && !b._change_attached && (f.event.add(b, "change._change",
        function(a) {
          this.parentNode && !a.isSimulated && !a.isTrigger && f.event.simulate("change", this.parentNode, a, !0)
        }), b._change_attached = !0)
      })
    },
    handle: function(a) {
      var b = a.target;
      if (this !== b || a.isSimulated || a.isTrigger || b.type !== "radio" && b.type !== "checkbox") return a.handleObj.handler.apply(this, arguments)
    },
    teardown: function() {
      f.event.remove(this, "._change");
      return z.test(this.nodeName)
    }
  }),
  f.support.focusinBubbles || f.each({
    focus: "focusin",
    blur: "focusout"
  },
  function(a, b) {
    var d = 0,
    e = function(a) {
      f.event.simulate(b, a.target, f.event.fix(a), !0)
    };
    f.event.special[b] = {
      setup: function() {
        d++===0 && c.addEventListener(a, e, !0)
      },
      teardown: function() {--d === 0 && c.removeEventListener(a, e, !0)
      }
    }
  }),
  f.fn.extend({
    on: function(a, c, d, e, g) {
      var h, i;
      if (typeof a == "object") {
        typeof c != "string" && (d = d || c, c = b);
        for (i in a) this.on(i, c, d, a[i], g);
        return this
      }
      d == null && e == null ? (e = c, d = c = b) : e == null && (typeof c == "string" ? (e = d, d = b) : (e = d, d = c, c = b));
      if (e === !1) e = J;
      else if (!e) return this;
      g === 1 && (h = e, e = function(a) {
        f().off(a);
        return h.apply(this, arguments)
      },
      e.guid = h.guid || (h.guid = f.guid++));
      return this.each(function() {
        f.event.add(this, a, e, d, c)
      })
    },
    one: function(a, b, c, d) {
      return this.on(a, b, c, d, 1)
    },
    off: function(a, c, d) {
      if (a && a.preventDefault && a.handleObj) {
        var e = a.handleObj;
        f(a.delegateTarget).off(e.namespace ? e.origType + "." + e.namespace: e.origType, e.selector, e.handler);
        return this
      }
      if (typeof a == "object") {
        for (var g in a) this.off(g, c, a[g]);
        return this
      }
      if (c === !1 || typeof c == "function") d = c,
      c = b;
      d === !1 && (d = J);
      return this.each(function() {
        f.event.remove(this, a, d, c)
      })
    },
    bind: function(a, b, c) {
      return this.on(a, null, b, c)
    },
    unbind: function(a, b) {
      return this.off(a, null, b)
    },
    live: function(a, b, c) {
      f(this.context).on(a, this.selector, b, c);
      return this
    },
    die: function(a, b) {
      f(this.context).off(a, this.selector || "**", b);
      return this
    },
    delegate: function(a, b, c, d) {
      return this.on(b, a, c, d)
    },
    undelegate: function(a, b, c) {
      return arguments.length == 1 ? this.off(a, "**") : this.off(b, a, c)
    },
    trigger: function(a, b) {
      return this.each(function() {
        f.event.trigger(a, b, this)
      })
    },
    triggerHandler: function(a, b) {
      if (this[0]) return f.event.trigger(a, b, this[0], !0)
    },
    toggle: function(a) {
      var b = arguments,
      c = a.guid || f.guid++,
      d = 0,
      e = function(c) {
        var e = (f._data(this, "lastToggle" + a.guid) || 0) % d;
        f._data(this, "lastToggle" + a.guid, e + 1),
        c.preventDefault();
        return b[e].apply(this, arguments) || !1
      };
      e.guid = c;
      while (d < b.length) b[d++].guid = c;
      return this.click(e)
    },
    hover: function(a, b) {
      return this.mouseenter(a).mouseleave(b || a)
    }
  }),
  f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),
  function(a, b) {
    f.fn[b] = function(a, c) {
      c == null && (c = a, a = null);
      return arguments.length > 0 ? this.on(b, null, a, c) : this.trigger(b)
    },
    f.attrFn && (f.attrFn[b] = !0),
    C.test(b) && (f.event.fixHooks[b] = f.event.keyHooks),
    D.test(b) && (f.event.fixHooks[b] = f.event.mouseHooks)
  }),
  function() {
    function x(a, b, c, e, f, g) {
      for (var h = 0,
      i = e.length; h < i; h++) {
        var j = e[h];
        if (j) {
          var k = !1;
          j = j[a];
          while (j) {
            if (j[d] === c) {
              k = e[j.sizset];
              break
            }
            if (j.nodeType === 1) {
              g || (j[d] = c, j.sizset = h);
              if (typeof b != "string") {
                if (j === b) {
                  k = !0;
                  break
                }
              } else if (m.filter(b, [j]).length > 0) {
                k = j;
                break
              }
            }
            j = j[a]
          }
          e[h] = k
        }
      }
    }
    function w(a, b, c, e, f, g) {
      for (var h = 0,
      i = e.length; h < i; h++) {
        var j = e[h];
        if (j) {
          var k = !1;
          j = j[a];
          while (j) {
            if (j[d] === c) {
              k = e[j.sizset];
              break
            }
            j.nodeType === 1 && !g && (j[d] = c, j.sizset = h);
            if (j.nodeName.toLowerCase() === b) {
              k = j;
              break
            }
            j = j[a]
          }
          e[h] = k
        }
      }
    }
    var a = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
    d = "sizcache" + (Math.random() + "").replace(".", ""),
    e = 0,
    g = Object.prototype.toString,
    h = !1,
    i = !0,
    j = /\\/g,
    k = /\r\n/g,
    l = /\W/; [0, 0].sort(function() {
      i = !1;
      return 0
    });
    var m = function(b, d, e, f) {
      e = e || [],
      d = d || c;
      var h = d;
      if (d.nodeType !== 1 && d.nodeType !== 9) return [];
      if (!b || typeof b != "string") return e;
      var i, j, k, l, n, q, r, t, u = !0,
      v = m.isXML(d),
      w = [],
      x = b;
      do {
        a.exec(""), i = a.exec(x);
        if (i) {
          x = i[3],
          w.push(i[1]);
          if (i[2]) {
            l = i[3];
            break
          }
        }
      } while ( i );
      if (w.length > 1 && p.exec(b)) if (w.length === 2 && o.relative[w[0]]) j = y(w[0] + w[1], d, f);
      else {
        j = o.relative[w[0]] ? [d] : m(w.shift(), d);
        while (w.length) b = w.shift(),
        o.relative[b] && (b += w.shift()),
        j = y(b, j, f)
      } else { ! f && w.length > 1 && d.nodeType === 9 && !v && o.match.ID.test(w[0]) && !o.match.ID.test(w[w.length - 1]) && (n = m.find(w.shift(), d, v), d = n.expr ? m.filter(n.expr, n.set)[0] : n.set[0]);
        if (d) {
          n = f ? {
            expr: w.pop(),
            set: s(f)
          }: m.find(w.pop(), w.length === 1 && (w[0] === "~" || w[0] === "+") && d.parentNode ? d.parentNode: d, v),
          j = n.expr ? m.filter(n.expr, n.set) : n.set,
          w.length > 0 ? k = s(j) : u = !1;
          while (w.length) q = w.pop(),
          r = q,
          o.relative[q] ? r = w.pop() : q = "",
          r == null && (r = d),
          o.relative[q](k, r, v)
        } else k = w = []
      }
      k || (k = j),
      k || m.error(q || b);
      if (g.call(k) === "[object Array]") if (!u) e.push.apply(e, k);
      else if (d && d.nodeType === 1) for (t = 0; k[t] != null; t++) k[t] && (k[t] === !0 || k[t].nodeType === 1 && m.contains(d, k[t])) && e.push(j[t]);
      else for (t = 0; k[t] != null; t++) k[t] && k[t].nodeType === 1 && e.push(j[t]);
      else s(k, e);
      l && (m(l, h, e, f), m.uniqueSort(e));
      return e
    };
    m.uniqueSort = function(a) {
      if (u) {
        h = i,
        a.sort(u);
        if (h) for (var b = 1; b < a.length; b++) a[b] === a[b - 1] && a.splice(b--, 1)
      }
      return a
    },
    m.matches = function(a, b) {
      return m(a, null, null, b)
    },
    m.matchesSelector = function(a, b) {
      return m(b, null, null, [a]).length > 0
    },
    m.find = function(a, b, c) {
      var d, e, f, g, h, i;
      if (!a) return [];
      for (e = 0, f = o.order.length; e < f; e++) {
        h = o.order[e];
        if (g = o.leftMatch[h].exec(a)) {
          i = g[1],
          g.splice(1, 1);
          if (i.substr(i.length - 1) !== "\\") {
            g[1] = (g[1] || "").replace(j, ""),
            d = o.find[h](g, b, c);
            if (d != null) {
              a = a.replace(o.match[h], "");
              break
            }
          }
        }
      }
      d || (d = typeof b.getElementsByTagName != "undefined" ? b.getElementsByTagName("*") : []);
      return {
        set: d,
        expr: a
      }
    },
    m.filter = function(a, c, d, e) {
      var f, g, h, i, j, k, l, n, p, q = a,
      r = [],
      s = c,
      t = c && c[0] && m.isXML(c[0]);
      while (a && c.length) {
        for (h in o.filter) if ((f = o.leftMatch[h].exec(a)) != null && f[2]) {
          k = o.filter[h],
          l = f[1],
          g = !1,
          f.splice(1, 1);
          if (l.substr(l.length - 1) === "\\") continue;
          s === r && (r = []);
          if (o.preFilter[h]) {
            f = o.preFilter[h](f, s, d, r, e, t);
            if (!f) g = i = !0;
            else if (f === !0) continue
          }
          if (f) for (n = 0; (j = s[n]) != null; n++) j && (i = k(j, f, n, s), p = e ^ i, d && i != null ? p ? g = !0 : s[n] = !1 : p && (r.push(j), g = !0));
          if (i !== b) {
            d || (s = r),
            a = a.replace(o.match[h], "");
            if (!g) return [];
            break
          }
        }
        if (a === q) if (g == null) m.error(a);
        else break;
        q = a
      }
      return s
    },
    m.error = function(a) {
      throw new Error("Syntax error, unrecognized expression: " + a)
    };
    var n = m.getText = function(a) {
      var b, c, d = a.nodeType,
      e = "";
      if (d) {
        if (d === 1 || d === 9 || d === 11) {
          if (typeof a.textContent == "string") return a.textContent;
          if (typeof a.innerText == "string") return a.innerText.replace(k, "");
          for (a = a.firstChild; a; a = a.nextSibling) e += n(a)
        } else if (d === 3 || d === 4) return a.nodeValue
      } else for (b = 0; c = a[b]; b++) c.nodeType !== 8 && (e += n(c));
      return e
    },
    o = m.selectors = {
      order: ["ID", "NAME", "TAG"],
      match: {
        ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
        CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
        NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
        ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
        TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
        CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
        POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
        PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
      },
      leftMatch: {},
      attrMap: {
        "class": "className",
        "for": "htmlFor"
      },
      attrHandle: {
        href: function(a) {
          return a.getAttribute("href")
        },
        type: function(a) {
          return a.getAttribute("type")
        }
      },
      relative: {
        "+": function(a, b) {
          var c = typeof b == "string",
          d = c && !l.test(b),
          e = c && !d;
          d && (b = b.toLowerCase());
          for (var f = 0,
          g = a.length,
          h; f < g; f++) if (h = a[f]) {
            while ((h = h.previousSibling) && h.nodeType !== 1);
            a[f] = e || h && h.nodeName.toLowerCase() === b ? h || !1 : h === b
          }
          e && m.filter(b, a, !0)
        },
        ">": function(a, b) {
          var c, d = typeof b == "string",
          e = 0,
          f = a.length;
          if (d && !l.test(b)) {
            b = b.toLowerCase();
            for (; e < f; e++) {
              c = a[e];
              if (c) {
                var g = c.parentNode;
                a[e] = g.nodeName.toLowerCase() === b ? g: !1
              }
            }
          } else {
            for (; e < f; e++) c = a[e],
            c && (a[e] = d ? c.parentNode: c.parentNode === b);
            d && m.filter(b, a, !0)
          }
        },
        "": function(a, b, c) {
          var d, f = e++,
          g = x;
          typeof b == "string" && !l.test(b) && (b = b.toLowerCase(), d = b, g = w),
          g("parentNode", b, f, a, d, c)
        },
        "~": function(a, b, c) {
          var d, f = e++,
          g = x;
          typeof b == "string" && !l.test(b) && (b = b.toLowerCase(), d = b, g = w),
          g("previousSibling", b, f, a, d, c)
        }
      },
      find: {
        ID: function(a, b, c) {
          if (typeof b.getElementById != "undefined" && !c) {
            var d = b.getElementById(a[1]);
            return d && d.parentNode ? [d] : []
          }
        },
        NAME: function(a, b) {
          if (typeof b.getElementsByName != "undefined") {
            var c = [],
            d = b.getElementsByName(a[1]);
            for (var e = 0,
            f = d.length; e < f; e++) d[e].getAttribute("name") === a[1] && c.push(d[e]);
            return c.length === 0 ? null: c
          }
        },
        TAG: function(a, b) {
          if (typeof b.getElementsByTagName != "undefined") return b.getElementsByTagName(a[1])
        }
      },
      preFilter: {
        CLASS: function(a, b, c, d, e, f) {
          a = " " + a[1].replace(j, "") + " ";
          if (f) return a;
          for (var g = 0,
          h; (h = b[g]) != null; g++) h && (e ^ (h.className && (" " + h.className + " ").replace(/[\t\n\r]/g, " ").indexOf(a) >= 0) ? c || d.push(h) : c && (b[g] = !1));
          return ! 1
        },
        ID: function(a) {
          return a[1].replace(j, "")
        },
        TAG: function(a, b) {
          return a[1].replace(j, "").toLowerCase()
        },
        CHILD: function(a) {
          if (a[1] === "nth") {
            a[2] || m.error(a[0]),
            a[2] = a[2].replace(/^\+|\s*/g, "");
            var b = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2] === "even" && "2n" || a[2] === "odd" && "2n+1" || !/\D/.test(a[2]) && "0n+" + a[2] || a[2]);
            a[2] = b[1] + (b[2] || 1) - 0,
            a[3] = b[3] - 0
          } else a[2] && m.error(a[0]);
          a[0] = e++;
          return a
        },
        ATTR: function(a, b, c, d, e, f) {
          var g = a[1] = a[1].replace(j, ""); ! f && o.attrMap[g] && (a[1] = o.attrMap[g]),
          a[4] = (a[4] || a[5] || "").replace(j, ""),
          a[2] === "~=" && (a[4] = " " + a[4] + " ");
          return a
        },
        PSEUDO: function(b, c, d, e, f) {
          if (b[1] === "not") if ((a.exec(b[3]) || "").length > 1 || /^\w/.test(b[3])) b[3] = m(b[3], null, null, c);
          else {
            var g = m.filter(b[3], c, d, !0 ^ f);
            d || e.push.apply(e, g);
            return ! 1
          } else if (o.match.POS.test(b[0]) || o.match.CHILD.test(b[0])) return ! 0;
          return b
        },
        POS: function(a) {
          a.unshift(!0);
          return a
        }
      },
      filters: {
        enabled: function(a) {
          return a.disabled === !1 && a.type !== "hidden"
        },
        disabled: function(a) {
          return a.disabled === !0
        },
        checked: function(a) {
          return a.checked === !0
        },
        selected: function(a) {
          a.parentNode && a.parentNode.selectedIndex;
          return a.selected === !0
        },
        parent: function(a) {
          return !! a.firstChild
        },
        empty: function(a) {
          return ! a.firstChild
        },
        has: function(a, b, c) {
          return !! m(c[3], a).length
        },
        header: function(a) {
          return /h\d/i.test(a.nodeName)
        },
        text: function(a) {
          var b = a.getAttribute("type"),
          c = a.type;
          return a.nodeName.toLowerCase() === "input" && "text" === c && (b === c || b === null)
        },
        radio: function(a) {
          return a.nodeName.toLowerCase() === "input" && "radio" === a.type
        },
        checkbox: function(a) {
          return a.nodeName.toLowerCase() === "input" && "checkbox" === a.type
        },
        file: function(a) {
          return a.nodeName.toLowerCase() === "input" && "file" === a.type
        },
        password: function(a) {
          return a.nodeName.toLowerCase() === "input" && "password" === a.type
        },
        submit: function(a) {
          var b = a.nodeName.toLowerCase();
          return (b === "input" || b === "button") && "submit" === a.type
        },
        image: function(a) {
          return a.nodeName.toLowerCase() === "input" && "image" === a.type
        },
        reset: function(a) {
          var b = a.nodeName.toLowerCase();
          return (b === "input" || b === "button") && "reset" === a.type
        },
        button: function(a) {
          var b = a.nodeName.toLowerCase();
          return b === "input" && "button" === a.type || b === "button"
        },
        input: function(a) {
          return /input|select|textarea|button/i.test(a.nodeName)
        },
        focus: function(a) {
          return a === a.ownerDocument.activeElement
        }
      },
      setFilters: {
        first: function(a, b) {
          return b === 0
        },
        last: function(a, b, c, d) {
          return b === d.length - 1
        },
        even: function(a, b) {
          return b % 2 === 0
        },
        odd: function(a, b) {
          return b % 2 === 1
        },
        lt: function(a, b, c) {
          return b < c[3] - 0
        },
        gt: function(a, b, c) {
          return b > c[3] - 0
        },
        nth: function(a, b, c) {
          return c[3] - 0 === b
        },
        eq: function(a, b, c) {
          return c[3] - 0 === b
        }
      },
      filter: {
        PSEUDO: function(a, b, c, d) {
          var e = b[1],
          f = o.filters[e];
          if (f) return f(a, c, b, d);
          if (e === "contains") return (a.textContent || a.innerText || n([a]) || "").indexOf(b[3]) >= 0;
          if (e === "not") {
            var g = b[3];
            for (var h = 0,
            i = g.length; h < i; h++) if (g[h] === a) return ! 1;
            return ! 0
          }
          m.error(e)
        },
        CHILD: function(a, b) {
          var c, e, f, g, h, i, j, k = b[1],
          l = a;
          switch (k) {
          case "only":
          case "first":
            while (l = l.previousSibling) if (l.nodeType === 1) return ! 1;
            if (k === "first") return ! 0;
            l = a;
          case "last":
            while (l = l.nextSibling) if (l.nodeType === 1) return ! 1;
            return ! 0;
          case "nth":
            c = b[2],
            e = b[3];
            if (c === 1 && e === 0) return ! 0;
            f = b[0],
            g = a.parentNode;
            if (g && (g[d] !== f || !a.nodeIndex)) {
              i = 0;
              for (l = g.firstChild; l; l = l.nextSibling) l.nodeType === 1 && (l.nodeIndex = ++i);
              g[d] = f
            }
            j = a.nodeIndex - e;
            return c === 0 ? j === 0 : j % c === 0 && j / c >= 0
          }
        },
        ID: function(a, b) {
          return a.nodeType === 1 && a.getAttribute("id") === b
        },
        TAG: function(a, b) {
          return b === "*" && a.nodeType === 1 || !!a.nodeName && a.nodeName.toLowerCase() === b
        },
        CLASS: function(a, b) {
          return (" " + (a.className || a.getAttribute("class")) + " ").indexOf(b) > -1
        },
        ATTR: function(a, b) {
          var c = b[1],
          d = m.attr ? m.attr(a, c) : o.attrHandle[c] ? o.attrHandle[c](a) : a[c] != null ? a[c] : a.getAttribute(c),
          e = d + "",
          f = b[2],
          g = b[4];
          return d == null ? f === "!=": !f && m.attr ? d != null: f === "=" ? e === g: f === "*=" ? e.indexOf(g) >= 0 : f === "~=" ? (" " + e + " ").indexOf(g) >= 0 : g ? f === "!=" ? e !== g: f === "^=" ? e.indexOf(g) === 0 : f === "$=" ? e.substr(e.length - g.length) === g: f === "|=" ? e === g || e.substr(0, g.length + 1) === g + "-": !1 : e && d !== !1
        },
        POS: function(a, b, c, d) {
          var e = b[2],
          f = o.setFilters[e];
          if (f) return f(a, c, b, d)
        }
      }
    },
    p = o.match.POS,
    q = function(a, b) {
      return "\\" + (b - 0 + 1)
    };
    for (var r in o.match) o.match[r] = new RegExp(o.match[r].source + /(?![^\[]*\])(?![^\(]*\))/.source),
    o.leftMatch[r] = new RegExp(/(^(?:.|\r|\n)*?)/.source + o.match[r].source.replace(/\\(\d+)/g, q));
    o.match.globalPOS = p;
    var s = function(a, b) {
      a = Array.prototype.slice.call(a, 0);
      if (b) {
        b.push.apply(b, a);
        return b
      }
      return a
    };
    try {
      Array.prototype.slice.call(c.documentElement.childNodes, 0)[0].nodeType
    } catch(t) {
      s = function(a, b) {
        var c = 0,
        d = b || [];
        if (g.call(a) === "[object Array]") Array.prototype.push.apply(d, a);
        else if (typeof a.length == "number") for (var e = a.length; c < e; c++) d.push(a[c]);
        else for (; a[c]; c++) d.push(a[c]);
        return d
      }
    }
    var u, v;
    c.documentElement.compareDocumentPosition ? u = function(a, b) {
      if (a === b) {
        h = !0;
        return 0
      }
      if (!a.compareDocumentPosition || !b.compareDocumentPosition) return a.compareDocumentPosition ? -1 : 1;
      return a.compareDocumentPosition(b) & 4 ? -1 : 1
    }: (u = function(a, b) {
      if (a === b) {
        h = !0;
        return 0
      }
      if (a.sourceIndex && b.sourceIndex) return a.sourceIndex - b.sourceIndex;
      var c, d, e = [],
      f = [],
      g = a.parentNode,
      i = b.parentNode,
      j = g;
      if (g === i) return v(a, b);
      if (!g) return - 1;
      if (!i) return 1;
      while (j) e.unshift(j),
      j = j.parentNode;
      j = i;
      while (j) f.unshift(j),
      j = j.parentNode;
      c = e.length,
      d = f.length;
      for (var k = 0; k < c && k < d; k++) if (e[k] !== f[k]) return v(e[k], f[k]);
      return k === c ? v(a, f[k], -1) : v(e[k], b, 1)
    },
    v = function(a, b, c) {
      if (a === b) return c;
      var d = a.nextSibling;
      while (d) {
        if (d === b) return - 1;
        d = d.nextSibling
      }
      return 1
    }),
    function() {
      var a = c.createElement("div"),
      d = "script" + (new Date).getTime(),
      e = c.documentElement;
      a.innerHTML = "<a name='" + d + "'/>",
      e.insertBefore(a, e.firstChild),
      c.getElementById(d) && (o.find.ID = function(a, c, d) {
        if (typeof c.getElementById != "undefined" && !d) {
          var e = c.getElementById(a[1]);
          return e ? e.id === a[1] || typeof e.getAttributeNode != "undefined" && e.getAttributeNode("id").nodeValue === a[1] ? [e] : b: []
        }
      },
      o.filter.ID = function(a, b) {
        var c = typeof a.getAttributeNode != "undefined" && a.getAttributeNode("id");
        return a.nodeType === 1 && c && c.nodeValue === b
      }),
      e.removeChild(a),
      e = a = null
    } (),
    function() {
      var a = c.createElement("div");
      a.appendChild(c.createComment("")),
      a.getElementsByTagName("*").length > 0 && (o.find.TAG = function(a, b) {
        var c = b.getElementsByTagName(a[1]);
        if (a[1] === "*") {
          var d = [];
          for (var e = 0; c[e]; e++) c[e].nodeType === 1 && d.push(c[e]);
          c = d
        }
        return c
      }),
      a.innerHTML = "<a href='#'></a>",
      a.firstChild && typeof a.firstChild.getAttribute != "undefined" && a.firstChild.getAttribute("href") !== "#" && (o.attrHandle.href = function(a) {
        return a.getAttribute("href", 2)
      }),
      a = null
    } (),
    c.querySelectorAll &&
    function() {
      var a = m,
      b = c.createElement("div"),
      d = "__sizzle__";
      b.innerHTML = "<p class='TEST'></p>";
      if (!b.querySelectorAll || b.querySelectorAll(".TEST").length !== 0) {
        m = function(b, e, f, g) {
          e = e || c;
          if (!g && !m.isXML(e)) {
            var h = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);
            if (h && (e.nodeType === 1 || e.nodeType === 9)) {
              if (h[1]) return s(e.getElementsByTagName(b), f);
              if (h[2] && o.find.CLASS && e.getElementsByClassName) return s(e.getElementsByClassName(h[2]), f)
            }
            if (e.nodeType === 9) {
              if (b === "body" && e.body) return s([e.body], f);
              if (h && h[3]) {
                var i = e.getElementById(h[3]);
                if (!i || !i.parentNode) return s([], f);
                if (i.id === h[3]) return s([i], f)
              }
              try {
                return s(e.querySelectorAll(b), f)
              } catch(j) {}
            } else if (e.nodeType === 1 && e.nodeName.toLowerCase() !== "object") {
              var k = e,
              l = e.getAttribute("id"),
              n = l || d,
              p = e.parentNode,
              q = /^\s*[+~]/.test(b);
              l ? n = n.replace(/'/g, "\\$&") : e.setAttribute("id", n),
              q && p && (e = e.parentNode);
              try {
                if (!q || p) return s(e.querySelectorAll("[id='" + n + "'] " + b), f)
              } catch(r) {} finally {
                l || k.removeAttribute("id")
              }
            }
          }
          return a(b, e, f, g)
        };
        for (var e in a) m[e] = a[e];
        b = null
      }
    } (),
    function() {
      var a = c.documentElement,
      b = a.matchesSelector || a.mozMatchesSelector || a.webkitMatchesSelector || a.msMatchesSelector;
      if (b) {
        var d = !b.call(c.createElement("div"), "div"),
        e = !1;
        try {
          b.call(c.documentElement, "[test!='']:sizzle")
        } catch(f) {
          e = !0
        }
        m.matchesSelector = function(a, c) {
          c = c.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
          if (!m.isXML(a)) try {
            if (e || !o.match.PSEUDO.test(c) && !/!=/.test(c)) {
              var f = b.call(a, c);
              if (f || !d || a.document && a.document.nodeType !== 11) return f
            }
          } catch(g) {}
          return m(c, null, null, [a]).length > 0
        }
      }
    } (),
    function() {
      var a = c.createElement("div");
      a.innerHTML = "<div class='test e'></div><div class='test'></div>";
      if ( !! a.getElementsByClassName && a.getElementsByClassName("e").length !== 0) {
        a.lastChild.className = "e";
        if (a.getElementsByClassName("e").length === 1) return;
        o.order.splice(1, 0, "CLASS"),
        o.find.CLASS = function(a, b, c) {
          if (typeof b.getElementsByClassName != "undefined" && !c) return b.getElementsByClassName(a[1])
        },
        a = null
      }
    } (),
    c.documentElement.contains ? m.contains = function(a, b) {
      return a !== b && (a.contains ? a.contains(b) : !0)
    }: c.documentElement.compareDocumentPosition ? m.contains = function(a, b) {
      return !! (a.compareDocumentPosition(b) & 16)
    }: m.contains = function() {
      return ! 1
    },
    m.isXML = function(a) {
      var b = (a ? a.ownerDocument || a: 0).documentElement;
      return b ? b.nodeName !== "HTML": !1
    };
    var y = function(a, b, c) {
      var d, e = [],
      f = "",
      g = b.nodeType ? [b] : b;
      while (d = o.match.PSEUDO.exec(a)) f += d[0],
      a = a.replace(o.match.PSEUDO, "");
      a = o.relative[a] ? a + "*": a;
      for (var h = 0,
      i = g.length; h < i; h++) m(a, g[h], e, c);
      return m.filter(f, e)
    };
    m.attr = f.attr,
    m.selectors.attrMap = {},
    f.find = m,
    f.expr = m.selectors,
    f.expr[":"] = f.expr.filters,
    f.unique = m.uniqueSort,
    f.text = m.getText,
    f.isXMLDoc = m.isXML,
    f.contains = m.contains
  } ();
  var L = /Until$/,
  M = /^(?:parents|prevUntil|prevAll)/,
  N = /,/,
  O = /^.[^:#\[\.,]*$/,
  P = Array.prototype.slice,
  Q = f.expr.match.globalPOS,
  R = {
    children: !0,
    contents: !0,
    next: !0,
    prev: !0
  };
  f.fn.extend({
    find: function(a) {
      var b = this,
      c, d;
      if (typeof a != "string") return f(a).filter(function() {
        for (c = 0, d = b.length; c < d; c++) if (f.contains(b[c], this)) return ! 0
      });
      var e = this.pushStack("", "find", a),
      g,
      h,
      i;
      for (c = 0, d = this.length; c < d; c++) {
        g = e.length,
        f.find(a, this[c], e);
        if (c > 0) for (h = g; h < e.length; h++) for (i = 0; i < g; i++) if (e[i] === e[h]) {
          e.splice(h--, 1);
          break
        }
      }
      return e
    },
    has: function(a) {
      var b = f(a);
      return this.filter(function() {
        for (var a = 0,
        c = b.length; a < c; a++) if (f.contains(this, b[a])) return ! 0
      })
    },
    not: function(a) {
      return this.pushStack(T(this, a, !1), "not", a)
    },
    filter: function(a) {
      return this.pushStack(T(this, a, !0), "filter", a)
    },
    is: function(a) {
      return !! a && (typeof a == "string" ? Q.test(a) ? f(a, this.context).index(this[0]) >= 0 : f.filter(a, this).length > 0 : this.filter(a).length > 0)
    },
    closest: function(a, b) {
      var c = [],
      d,
      e,
      g = this[0];
      if (f.isArray(a)) {
        var h = 1;
        while (g && g.ownerDocument && g !== b) {
          for (d = 0; d < a.length; d++) f(g).is(a[d]) && c.push({
            selector: a[d],
            elem: g,
            level: h
          });
          g = g.parentNode,
          h++
        }
        return c
      }
      var i = Q.test(a) || typeof a != "string" ? f(a, b || this.context) : 0;
      for (d = 0, e = this.length; d < e; d++) {
        g = this[d];
        while (g) {
          if (i ? i.index(g) > -1 : f.find.matchesSelector(g, a)) {
            c.push(g);
            break
          }
          g = g.parentNode;
          if (!g || !g.ownerDocument || g === b || g.nodeType === 11) break
        }
      }
      c = c.length > 1 ? f.unique(c) : c;
      return this.pushStack(c, "closest", a)
    },
    index: function(a) {
      if (!a) return this[0] && this[0].parentNode ? this.prevAll().length: -1;
      if (typeof a == "string") return f.inArray(this[0], f(a));
      return f.inArray(a.jquery ? a[0] : a, this)
    },
    add: function(a, b) {
      var c = typeof a == "string" ? f(a, b) : f.makeArray(a && a.nodeType ? [a] : a),
      d = f.merge(this.get(), c);
      return this.pushStack(S(c[0]) || S(d[0]) ? d: f.unique(d))
    },
    andSelf: function() {
      return this.add(this.prevObject)
    }
  }),
  f.each({
    parent: function(a) {
      var b = a.parentNode;
      return b && b.nodeType !== 11 ? b: null
    },
    parents: function(a) {
      return f.dir(a, "parentNode")
    },
    parentsUntil: function(a, b, c) {
      return f.dir(a, "parentNode", c)
    },
    next: function(a) {
      return f.nth(a, 2, "nextSibling")
    },
    prev: function(a) {
      return f.nth(a, 2, "previousSibling")
    },
    nextAll: function(a) {
      return f.dir(a, "nextSibling")
    },
    prevAll: function(a) {
      return f.dir(a, "previousSibling")
    },
    nextUntil: function(a, b, c) {
      return f.dir(a, "nextSibling", c)
    },
    prevUntil: function(a, b, c) {
      return f.dir(a, "previousSibling", c)
    },
    siblings: function(a) {
      return f.sibling((a.parentNode || {}).firstChild, a)
    },
    children: function(a) {
      return f.sibling(a.firstChild)
    },
    contents: function(a) {
      return f.nodeName(a, "iframe") ? a.contentDocument || a.contentWindow.document: f.makeArray(a.childNodes)
    }
  },
  function(a, b) {
    f.fn[a] = function(c, d) {
      var e = f.map(this, b, c);
      L.test(a) || (d = c),
      d && typeof d == "string" && (e = f.filter(d, e)),
      e = this.length > 1 && !R[a] ? f.unique(e) : e,
      (this.length > 1 || N.test(d)) && M.test(a) && (e = e.reverse());
      return this.pushStack(e, a, P.call(arguments).join(","))
    }
  }),
  f.extend({
    filter: function(a, b, c) {
      c && (a = ":not(" + a + ")");
      return b.length === 1 ? f.find.matchesSelector(b[0], a) ? [b[0]] : [] : f.find.matches(a, b)
    },
    dir: function(a, c, d) {
      var e = [],
      g = a[c];
      while (g && g.nodeType !== 9 && (d === b || g.nodeType !== 1 || !f(g).is(d))) g.nodeType === 1 && e.push(g),
      g = g[c];
      return e
    },
    nth: function(a, b, c, d) {
      b = b || 1;
      var e = 0;
      for (; a; a = a[c]) if (a.nodeType === 1 && ++e === b) break;
      return a
    },
    sibling: function(a, b) {
      var c = [];
      for (; a; a = a.nextSibling) a.nodeType === 1 && a !== b && c.push(a);
      return c
    }
  });
  var V = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
  W = / jQuery\d+="(?:\d+|null)"/g,
  X = /^\s+/,
  Y = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
  Z = /<([\w:]+)/,
  $ = /<tbody/i,
  _ = /<|&#?\w+;/,
  ba = /<(?:script|style)/i,
  bb = /<(?:script|object|embed|option|style)/i,
  bc = new RegExp("<(?:" + V + ")[\\s/>]", "i"),
  bd = /checked\s*(?:[^=]|=\s*.checked.)/i,
  be = /\/(java|ecma)script/i,
  bf = /^\s*<!(?:\[CDATA\[|\-\-)/,
  bg = {
    option: [1, "<select multiple='multiple'>", "</select>"],
    legend: [1, "<fieldset>", "</fieldset>"],
    thead: [1, "<table>", "</table>"],
    tr: [2, "<table><tbody>", "</tbody></table>"],
    td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
    col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
    area: [1, "<map>", "</map>"],
    _default: [0, "", ""]
  },
  bh = U(c);
  bg.optgroup = bg.option,
  bg.tbody = bg.tfoot = bg.colgroup = bg.caption = bg.thead,
  bg.th = bg.td,
  f.support.htmlSerialize || (bg._default = [1, "div<div>", "</div>"]),
  f.fn.extend({
    text: function(a) {
      return f.access(this,
      function(a) {
        return a === b ? f.text(this) : this.empty().append((this[0] && this[0].ownerDocument || c).createTextNode(a))
      },
      null, a, arguments.length)
    },
    wrapAll: function(a) {
      if (f.isFunction(a)) return this.each(function(b) {
        f(this).wrapAll(a.call(this, b))
      });
      if (this[0]) {
        var b = f(a, this[0].ownerDocument).eq(0).clone(!0);
        this[0].parentNode && b.insertBefore(this[0]),
        b.map(function() {
          var a = this;
          while (a.firstChild && a.firstChild.nodeType === 1) a = a.firstChild;
          return a
        }).append(this)
      }
      return this
    },
    wrapInner: function(a) {
      if (f.isFunction(a)) return this.each(function(b) {
        f(this).wrapInner(a.call(this, b))
      });
      return this.each(function() {
        var b = f(this),
        c = b.contents();
        c.length ? c.wrapAll(a) : b.append(a)
      })
    },
    wrap: function(a) {
      var b = f.isFunction(a);
      return this.each(function(c) {
        f(this).wrapAll(b ? a.call(this, c) : a)
      })
    },
    unwrap: function() {
      return this.parent().each(function() {
        f.nodeName(this, "body") || f(this).replaceWith(this.childNodes)
      }).end()
    },
    append: function() {
      return this.domManip(arguments, !0,
      function(a) {
        this.nodeType === 1 && this.appendChild(a)
      })
    },
    prepend: function() {
      return this.domManip(arguments, !0,
      function(a) {
        this.nodeType === 1 && this.insertBefore(a, this.firstChild)
      })
    },
    before: function() {
      if (this[0] && this[0].parentNode) return this.domManip(arguments, !1,
      function(a) {
        this.parentNode.insertBefore(a, this)
      });
      if (arguments.length) {
        var a = f.clean(arguments);
        a.push.apply(a, this.toArray());
        return this.pushStack(a, "before", arguments)
      }
    },
    after: function() {
      if (this[0] && this[0].parentNode) return this.domManip(arguments, !1,
      function(a) {
        this.parentNode.insertBefore(a, this.nextSibling)
      });
      if (arguments.length) {
        var a = this.pushStack(this, "after", arguments);
        a.push.apply(a, f.clean(arguments));
        return a
      }
    },
    remove: function(a, b) {
      for (var c = 0,
      d; (d = this[c]) != null; c++) if (!a || f.filter(a, [d]).length) ! b && d.nodeType === 1 && (f.cleanData(d.getElementsByTagName("*")), f.cleanData([d])),
      d.parentNode && d.parentNode.removeChild(d);
      return this
    },
    empty: function() {
      for (var a = 0,
      b; (b = this[a]) != null; a++) {
        b.nodeType === 1 && f.cleanData(b.getElementsByTagName("*"));
        while (b.firstChild) b.removeChild(b.firstChild)
      }
      return this
    },
    clone: function(a, b) {
      a = a == null ? !1 : a,
      b = b == null ? a: b;
      return this.map(function() {
        return f.clone(this, a, b)
      })
    },
    html: function(a) {
      return f.access(this,
      function(a) {
        var c = this[0] || {},
        d = 0,
        e = this.length;
        if (a === b) return c.nodeType === 1 ? c.innerHTML.replace(W, "") : null;
        if (typeof a == "string" && !ba.test(a) && (f.support.leadingWhitespace || !X.test(a)) && !bg[(Z.exec(a) || ["", ""])[1].toLowerCase()]) {
          a = a.replace(Y, "<$1></$2>");
          try {
            for (; d < e; d++) c = this[d] || {},
            c.nodeType === 1 && (f.cleanData(c.getElementsByTagName("*")), c.innerHTML = a);
            c = 0
          } catch(g) {}
        }
        c && this.empty().append(a)
      },
      null, a, arguments.length)
    },
    replaceWith: function(a) {
      if (this[0] && this[0].parentNode) {
        if (f.isFunction(a)) return this.each(function(b) {
          var c = f(this),
          d = c.html();
          c.replaceWith(a.call(this, b, d))
        });
        typeof a != "string" && (a = f(a).detach());
        return this.each(function() {
          var b = this.nextSibling,
          c = this.parentNode;
          f(this).remove(),
          b ? f(b).before(a) : f(c).append(a)
        })
      }
      return this.length ? this.pushStack(f(f.isFunction(a) ? a() : a), "replaceWith", a) : this
    },
    detach: function(a) {
      return this.remove(a, !0)
    },
    domManip: function(a, c, d) {
      var e, g, h, i, j = a[0],
      k = [];
      if (!f.support.checkClone && arguments.length === 3 && typeof j == "string" && bd.test(j)) return this.each(function() {
        f(this).domManip(a, c, d, !0)
      });
      if (f.isFunction(j)) return this.each(function(e) {
        var g = f(this);
        a[0] = j.call(this, e, c ? g.html() : b),
        g.domManip(a, c, d)
      });
      if (this[0]) {
        i = j && j.parentNode,
        f.support.parentNode && i && i.nodeType === 11 && i.childNodes.length === this.length ? e = {
          fragment: i
        }: e = f.buildFragment(a, this, k),
        h = e.fragment,
        h.childNodes.length === 1 ? g = h = h.firstChild: g = h.firstChild;
        if (g) {
          c = c && f.nodeName(g, "tr");
          for (var l = 0,
          m = this.length,
          n = m - 1; l < m; l++) d.call(c ? bi(this[l], g) : this[l], e.cacheable || m > 1 && l < n ? f.clone(h, !0, !0) : h)
        }
        k.length && f.each(k,
        function(a, b) {
          b.src ? f.ajax({
            type: "GET",
            global: !1,
            url: b.src,
            async: !1,
            dataType: "script"
          }) : f.globalEval((b.text || b.textContent || b.innerHTML || "").replace(bf, "/*$0*/")),
          b.parentNode && b.parentNode.removeChild(b)
        })
      }
      return this
    }
  }),
  f.buildFragment = function(a, b, d) {
    var e, g, h, i, j = a[0];
    b && b[0] && (i = b[0].ownerDocument || b[0]),
    i.createDocumentFragment || (i = c),
    a.length === 1 && typeof j == "string" && j.length < 512 && i === c && j.charAt(0) === "<" && !bb.test(j) && (f.support.checkClone || !bd.test(j)) && (f.support.html5Clone || !bc.test(j)) && (g = !0, h = f.fragments[j], h && h !== 1 && (e = h)),
    e || (e = i.createDocumentFragment(), f.clean(a, i, e, d)),
    g && (f.fragments[j] = h ? e: 1);
    return {
      fragment: e,
      cacheable: g
    }
  },
  f.fragments = {},
  f.each({
    appendTo: "append",
    prependTo: "prepend",
    insertBefore: "before",
    insertAfter: "after",
    replaceAll: "replaceWith"
  },
  function(a, b) {
    f.fn[a] = function(c) {
      var d = [],
      e = f(c),
      g = this.length === 1 && this[0].parentNode;
      if (g && g.nodeType === 11 && g.childNodes.length === 1 && e.length === 1) {
        e[b](this[0]);
        return this
      }
      for (var h = 0,
      i = e.length; h < i; h++) {
        var j = (h > 0 ? this.clone(!0) : this).get();
        f(e[h])[b](j),
        d = d.concat(j)
      }
      return this.pushStack(d, a, e.selector)
    }
  }),
  f.extend({
    clone: function(a, b, c) {
      var d, e, g, h = f.support.html5Clone || f.isXMLDoc(a) || !bc.test("<" + a.nodeName + ">") ? a.cloneNode(!0) : bo(a);
      if ((!f.support.noCloneEvent || !f.support.noCloneChecked) && (a.nodeType === 1 || a.nodeType === 11) && !f.isXMLDoc(a)) {
        bk(a, h),
        d = bl(a),
        e = bl(h);
        for (g = 0; d[g]; ++g) e[g] && bk(d[g], e[g])
      }
      if (b) {
        bj(a, h);
        if (c) {
          d = bl(a),
          e = bl(h);
          for (g = 0; d[g]; ++g) bj(d[g], e[g])
        }
      }
      d = e = null;
      return h
    },
    clean: function(a, b, d, e) {
      var g, h, i, j = [];
      b = b || c,
      typeof b.createElement == "undefined" && (b = b.ownerDocument || b[0] && b[0].ownerDocument || c);
      for (var k = 0,
      l; (l = a[k]) != null; k++) {
        typeof l == "number" && (l += "");
        if (!l) continue;
        if (typeof l == "string") if (!_.test(l)) l = b.createTextNode(l);
        else {
          l = l.replace(Y, "<$1></$2>");
          var m = (Z.exec(l) || ["", ""])[1].toLowerCase(),
          n = bg[m] || bg._default,
          o = n[0],
          p = b.createElement("div"),
          q = bh.childNodes,
          r;
          b === c ? bh.appendChild(p) : U(b).appendChild(p),
          p.innerHTML = n[1] + l + n[2];
          while (o--) p = p.lastChild;
          if (!f.support.tbody) {
            var s = $.test(l),
            t = m === "table" && !s ? p.firstChild && p.firstChild.childNodes: n[1] === "<table>" && !s ? p.childNodes: [];
            for (i = t.length - 1; i >= 0; --i) f.nodeName(t[i], "tbody") && !t[i].childNodes.length && t[i].parentNode.removeChild(t[i])
          } ! f.support.leadingWhitespace && X.test(l) && p.insertBefore(b.createTextNode(X.exec(l)[0]), p.firstChild),
          l = p.childNodes,
          p && (p.parentNode.removeChild(p), q.length > 0 && (r = q[q.length - 1], r && r.parentNode && r.parentNode.removeChild(r)))
        }
        var u;
        if (!f.support.appendChecked) if (l[0] && typeof(u = l.length) == "number") for (i = 0; i < u; i++) bn(l[i]);
        else bn(l);
        l.nodeType ? j.push(l) : j = f.merge(j, l)
      }
      if (d) {
        g = function(a) {
          return ! a.type || be.test(a.type)
        };
        for (k = 0; j[k]; k++) {
          h = j[k];
          if (e && f.nodeName(h, "script") && (!h.type || be.test(h.type))) e.push(h.parentNode ? h.parentNode.removeChild(h) : h);
          else {
            if (h.nodeType === 1) {
              var v = f.grep(h.getElementsByTagName("script"), g);
              j.splice.apply(j, [k + 1, 0].concat(v))
            }
            d.appendChild(h)
          }
        }
      }
      return j
    },
    cleanData: function(a) {
      var b, c, d = f.cache,
      e = f.event.special,
      g = f.support.deleteExpando;
      for (var h = 0,
      i; (i = a[h]) != null; h++) {
        if (i.nodeName && f.noData[i.nodeName.toLowerCase()]) continue;
        c = i[f.expando];
        if (c) {
          b = d[c];
          if (b && b.events) {
            for (var j in b.events) e[j] ? f.event.remove(i, j) : f.removeEvent(i, j, b.handle);
            b.handle && (b.handle.elem = null)
          }
          g ? delete i[f.expando] : i.removeAttribute && i.removeAttribute(f.expando),
          delete d[c]
        }
      }
    }
  });
  var bp = /alpha\([^)]*\)/i,
  bq = /opacity=([^)]*)/,
  br = /([A-Z]|^ms)/g,
  bs = /^[\-+]?(?:\d*\.)?\d+$/i,
  bt = /^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,
  bu = /^([\-+])=([\-+.\de]+)/,
  bv = /^margin/,
  bw = {
    position: "absolute",
    visibility: "hidden",
    display: "block"
  },
  bx = ["Top", "Right", "Bottom", "Left"],
  by,
  bz,
  bA;
  f.fn.css = function(a, c) {
    return f.access(this,
    function(a, c, d) {
      return d !== b ? f.style(a, c, d) : f.css(a, c)
    },
    a, c, arguments.length > 1)
  },
  f.extend({
    cssHooks: {
      opacity: {
        get: function(a, b) {
          if (b) {
            var c = by(a, "opacity");
            return c === "" ? "1": c
          }
          return a.style.opacity
        }
      }
    },
    cssNumber: {
      fillOpacity: !0,
      fontWeight: !0,
      lineHeight: !0,
      opacity: !0,
      orphans: !0,
      widows: !0,
      zIndex: !0,
      zoom: !0
    },
    cssProps: {
      "float": f.support.cssFloat ? "cssFloat": "styleFloat"
    },
    style: function(a, c, d, e) {
      if ( !! a && a.nodeType !== 3 && a.nodeType !== 8 && !!a.style) {
        var g, h, i = f.camelCase(c),
        j = a.style,
        k = f.cssHooks[i];
        c = f.cssProps[i] || i;
        if (d === b) {
          if (k && "get" in k && (g = k.get(a, !1, e)) !== b) return g;
          return j[c]
        }
        h = typeof d,
        h === "string" && (g = bu.exec(d)) && (d = +(g[1] + 1) * +g[2] + parseFloat(f.css(a, c)), h = "number");
        if (d == null || h === "number" && isNaN(d)) return;
        h === "number" && !f.cssNumber[i] && (d += "px");
        if (!k || !("set" in k) || (d = k.set(a, d)) !== b) try {
          j[c] = d
        } catch(l) {}
      }
    },
    css: function(a, c, d) {
      var e, g;
      c = f.camelCase(c),
      g = f.cssHooks[c],
      c = f.cssProps[c] || c,
      c === "cssFloat" && (c = "float");
      if (g && "get" in g && (e = g.get(a, !0, d)) !== b) return e;
      if (by) return by(a, c)
    },
    swap: function(a, b, c) {
      var d = {},
      e, f;
      for (f in b) d[f] = a.style[f],
      a.style[f] = b[f];
      e = c.call(a);
      for (f in b) a.style[f] = d[f];
      return e
    }
  }),
  f.curCSS = f.css,
  c.defaultView && c.defaultView.getComputedStyle && (bz = function(a, b) {
    var c, d, e, g, h = a.style;
    b = b.replace(br, "-$1").toLowerCase(),
    (d = a.ownerDocument.defaultView) && (e = d.getComputedStyle(a, null)) && (c = e.getPropertyValue(b), c === "" && !f.contains(a.ownerDocument.documentElement, a) && (c = f.style(a, b))),
    !f.support.pixelMargin && e && bv.test(b) && bt.test(c) && (g = h.width, h.width = c, c = e.width, h.width = g);
    return c
  }),
  c.documentElement.currentStyle && (bA = function(a, b) {
    var c, d, e, f = a.currentStyle && a.currentStyle[b],
    g = a.style;
    f == null && g && (e = g[b]) && (f = e),
    bt.test(f) && (c = g.left, d = a.runtimeStyle && a.runtimeStyle.left, d && (a.runtimeStyle.left = a.currentStyle.left), g.left = b === "fontSize" ? "1em": f, f = g.pixelLeft + "px", g.left = c, d && (a.runtimeStyle.left = d));
    return f === "" ? "auto": f
  }),
  by = bz || bA,
  f.each(["height", "width"],
  function(a, b) {
    f.cssHooks[b] = {
      get: function(a, c, d) {
        if (c) return a.offsetWidth !== 0 ? bB(a, b, d) : f.swap(a, bw,
        function() {
          return bB(a, b, d)
        })
      },
      set: function(a, b) {
        return bs.test(b) ? b + "px": b
      }
    }
  }),
  f.support.opacity || (f.cssHooks.opacity = {
    get: function(a, b) {
      return bq.test((b && a.currentStyle ? a.currentStyle.filter: a.style.filter) || "") ? parseFloat(RegExp.$1) / 100 + "": b ? "1": ""
    },
    set: function(a, b) {
      var c = a.style,
      d = a.currentStyle,
      e = f.isNumeric(b) ? "alpha(opacity=" + b * 100 + ")": "",
      g = d && d.filter || c.filter || "";
      c.zoom = 1;
      if (b >= 1 && f.trim(g.replace(bp, "")) === "") {
        c.removeAttribute("filter");
        if (d && !d.filter) return
      }
      c.filter = bp.test(g) ? g.replace(bp, e) : g + " " + e
    }
  }),
  f(function() {
    f.support.reliableMarginRight || (f.cssHooks.marginRight = {
      get: function(a, b) {
        return f.swap(a, {
          display: "inline-block"
        },
        function() {
          return b ? by(a, "margin-right") : a.style.marginRight
        })
      }
    })
  }),
  f.expr && f.expr.filters && (f.expr.filters.hidden = function(a) {
    var b = a.offsetWidth,
    c = a.offsetHeight;
    return b === 0 && c === 0 || !f.support.reliableHiddenOffsets && (a.style && a.style.display || f.css(a, "display")) === "none"
  },
  f.expr.filters.visible = function(a) {
    return ! f.expr.filters.hidden(a)
  }),
  f.each({
    margin: "",
    padding: "",
    border: "Width"
  },
  function(a, b) {
    f.cssHooks[a + b] = {
      expand: function(c) {
        var d, e = typeof c == "string" ? c.split(" ") : [c],
        f = {};
        for (d = 0; d < 4; d++) f[a + bx[d] + b] = e[d] || e[d - 2] || e[0];
        return f
      }
    }
  });
  var bC = /%20/g,
  bD = /\[\]$/,
  bE = /\r?\n/g,
  bF = /#.*$/,
  bG = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg,
  bH = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
  bI = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
  bJ = /^(?:GET|HEAD)$/,
  bK = /^\/\//,
  bL = /\?/,
  bM = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
  bN = /^(?:select|textarea)/i,
  bO = /\s+/,
  bP = /([?&])_=[^&]*/,
  bQ = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
  bR = f.fn.load,
  bS = {},
  bT = {},
  bU, bV, bW = ["*/"] + ["*"];
  try {
    bU = e.href
  } catch(bX) {
    bU = c.createElement("a"),
    bU.href = "",
    bU = bU.href
  }
  bV = bQ.exec(bU.toLowerCase()) || [],
  f.fn.extend({
    load: function(a, c, d) {
      if (typeof a != "string" && bR) return bR.apply(this, arguments);
      if (!this.length) return this;
      var e = a.indexOf(" ");
      if (e >= 0) {
        var g = a.slice(e, a.length);
        a = a.slice(0, e)
      }
      var h = "GET";
      c && (f.isFunction(c) ? (d = c, c = b) : typeof c == "object" && (c = f.param(c, f.ajaxSettings.traditional), h = "POST"));
      var i = this;
      f.ajax({
        url: a,
        type: h,
        dataType: "html",
        data: c,
        complete: function(a, b, c) {
          c = a.responseText,
          a.isResolved() && (a.done(function(a) {
            c = a
          }), i.html(g ? f("<div>").append(c.replace(bM, "")).find(g) : c)),
          d && i.each(d, [c, b, a])
        }
      });
      return this
    },
    serialize: function() {
      return f.param(this.serializeArray())
    },
    serializeArray: function() {
      return this.map(function() {
        return this.elements ? f.makeArray(this.elements) : this
      }).filter(function() {
        return this.name && !this.disabled && (this.checked || bN.test(this.nodeName) || bH.test(this.type))
      }).map(function(a, b) {
        var c = f(this).val();
        return c == null ? null: f.isArray(c) ? f.map(c,
        function(a, c) {
          return {
            name: b.name,
            value: a.replace(bE, "\r\n")
          }
        }) : {
          name: b.name,
          value: c.replace(bE, "\r\n")
        }
      }).get()
    }
  }),
  f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
  function(a, b) {
    f.fn[b] = function(a) {
      return this.on(b, a)
    }
  }),
  f.each(["get", "post"],
  function(a, c) {
    f[c] = function(a, d, e, g) {
      f.isFunction(d) && (g = g || e, e = d, d = b);
      return f.ajax({
        type: c,
        url: a,
        data: d,
        success: e,
        dataType: g
      })
    }
  }),
  f.extend({
    getScript: function(a, c) {
      return f.get(a, b, c, "script")
    },
    getJSON: function(a, b, c) {
      return f.get(a, b, c, "json")
    },
    ajaxSetup: function(a, b) {
      b ? b$(a, f.ajaxSettings) : (b = a, a = f.ajaxSettings),
      b$(a, b);
      return a
    },
    ajaxSettings: {
      url: bU,
      isLocal: bI.test(bV[1]),
      global: !0,
      type: "GET",
      contentType: "application/x-www-form-urlencoded; charset=UTF-8",
      processData: !0,
      async: !0,
      accepts: {
        xml: "application/xml, text/xml",
        html: "text/html",
        text: "text/plain",
        json: "application/json, text/javascript",
        "*": bW
      },
      contents: {
        xml: /xml/,
        html: /html/,
        json: /json/
      },
      responseFields: {
        xml: "responseXML",
        text: "responseText"
      },
      converters: {
        "* text": a.String,
        "text html": !0,
        "text json": f.parseJSON,
        "text xml": f.parseXML
      },
      flatOptions: {
        context: !0,
        url: !0
      }
    },
    ajaxPrefilter: bY(bS),
    ajaxTransport: bY(bT),
    ajax: function(a, c) {
      function w(a, c, l, m) {
        if (s !== 2) {
          s = 2,
          q && clearTimeout(q),
          p = b,
          n = m || "",
          v.readyState = a > 0 ? 4 : 0;
          var o, r, u, w = c,
          x = l ? ca(d, v, l) : b,
          y,
          z;
          if (a >= 200 && a < 300 || a === 304) {
            if (d.ifModified) {
              if (y = v.getResponseHeader("Last-Modified")) f.lastModified[k] = y;
              if (z = v.getResponseHeader("Etag")) f.etag[k] = z
            }
            if (a === 304) w = "notmodified",
            o = !0;
            else try {
              r = cb(d, x),
              w = "success",
              o = !0
            } catch(A) {
              w = "parsererror",
              u = A
            }
          } else {
            u = w;
            if (!w || a) w = "error",
            a < 0 && (a = 0)
          }
          v.status = a,
          v.statusText = "" + (c || w),
          o ? h.resolveWith(e, [r, w, v]) : h.rejectWith(e, [v, w, u]),
          v.statusCode(j),
          j = b,
          t && g.trigger("ajax" + (o ? "Success": "Error"), [v, d, o ? r: u]),
          i.fireWith(e, [v, w]),
          t && (g.trigger("ajaxComplete", [v, d]), --f.active || f.event.trigger("ajaxStop"))
        }
      }
      typeof a == "object" && (c = a, a = b),
      c = c || {};
      var d = f.ajaxSetup({},
      c),
      e = d.context || d,
      g = e !== d && (e.nodeType || e instanceof f) ? f(e) : f.event,
      h = f.Deferred(),
      i = f.Callbacks("once memory"),
      j = d.statusCode || {},
      k,
      l = {},
      m = {},
      n,
      o,
      p,
      q,
      r,
      s = 0,
      t,
      u,
      v = {
        readyState: 0,
        setRequestHeader: function(a, b) {
          if (!s) {
            var c = a.toLowerCase();
            a = m[c] = m[c] || a,
            l[a] = b
          }
          return this
        },
        getAllResponseHeaders: function() {
          return s === 2 ? n: null
        },
        getResponseHeader: function(a) {
          var c;
          if (s === 2) {
            if (!o) {
              o = {};
              while (c = bG.exec(n)) o[c[1].toLowerCase()] = c[2]
            }
            c = o[a.toLowerCase()]
          }
          return c === b ? null: c
        },
        overrideMimeType: function(a) {
          s || (d.mimeType = a);
          return this
        },
        abort: function(a) {
          a = a || "abort",
          p && p.abort(a),
          w(0, a);
          return this
        }
      };
      h.promise(v),
      v.success = v.done,
      v.error = v.fail,
      v.complete = i.add,
      v.statusCode = function(a) {
        if (a) {
          var b;
          if (s < 2) for (b in a) j[b] = [j[b], a[b]];
          else b = a[v.status],
          v.then(b, b)
        }
        return this
      },
      d.url = ((a || d.url) + "").replace(bF, "").replace(bK, bV[1] + "//"),
      d.dataTypes = f.trim(d.dataType || "*").toLowerCase().split(bO),
      d.crossDomain == null && (r = bQ.exec(d.url.toLowerCase()), d.crossDomain = !(!r || r[1] == bV[1] && r[2] == bV[2] && (r[3] || (r[1] === "http:" ? 80 : 443)) == (bV[3] || (bV[1] === "http:" ? 80 : 443)))),
      d.data && d.processData && typeof d.data != "string" && (d.data = f.param(d.data, d.traditional)),
      bZ(bS, d, c, v);
      if (s === 2) return ! 1;
      t = d.global,
      d.type = d.type.toUpperCase(),
      d.hasContent = !bJ.test(d.type),
      t && f.active++===0 && f.event.trigger("ajaxStart");
      if (!d.hasContent) {
        d.data && (d.url += (bL.test(d.url) ? "&": "?") + d.data, delete d.data),
        k = d.url;
        if (d.cache === !1) {
          var x = f.now(),
          y = d.url.replace(bP, "$1_=" + x);
          d.url = y + (y === d.url ? (bL.test(d.url) ? "&": "?") + "_=" + x: "")
        }
      } (d.data && d.hasContent && d.contentType !== !1 || c.contentType) && v.setRequestHeader("Content-Type", d.contentType),
      d.ifModified && (k = k || d.url, f.lastModified[k] && v.setRequestHeader("If-Modified-Since", f.lastModified[k]), f.etag[k] && v.setRequestHeader("If-None-Match", f.etag[k])),
      v.setRequestHeader("Accept", d.dataTypes[0] && d.accepts[d.dataTypes[0]] ? d.accepts[d.dataTypes[0]] + (d.dataTypes[0] !== "*" ? ", " + bW + "; q=0.01": "") : d.accepts["*"]);
      for (u in d.headers) v.setRequestHeader(u, d.headers[u]);
      if (d.beforeSend && (d.beforeSend.call(e, v, d) === !1 || s === 2)) {
        v.abort();
        return ! 1
      }
      for (u in {
        success: 1,
        error: 1,
        complete: 1
      }) v[u](d[u]);
      p = bZ(bT, d, c, v);
      if (!p) w( - 1, "No Transport");
      else {
        v.readyState = 1,
        t && g.trigger("ajaxSend", [v, d]),
        d.async && d.timeout > 0 && (q = setTimeout(function() {
          v.abort("timeout")
        },
        d.timeout));
        try {
          s = 1,
          p.send(l, w)
        } catch(z) {
          if (s < 2) w( - 1, z);
          else throw z
        }
      }
      return v
    },
    param: function(a, c) {
      var d = [],
      e = function(a, b) {
        b = f.isFunction(b) ? b() : b,
        d[d.length] = encodeURIComponent(a) + "=" + encodeURIComponent(b)
      };
      c === b && (c = f.ajaxSettings.traditional);
      if (f.isArray(a) || a.jquery && !f.isPlainObject(a)) f.each(a,
      function() {
        e(this.name, this.value)
      });
      else for (var g in a) b_(g, a[g], c, e);
      return d.join("&").replace(bC, "+")
    }
  }),
  f.extend({
    active: 0,
    lastModified: {},
    etag: {}
  });
  var cc = f.now(),
  cd = /(\=)\?(&|$)|\?\?/i;
  f.ajaxSetup({
    jsonp: "callback",
    jsonpCallback: function() {
      return f.expando + "_" + cc++
    }
  }),
  f.ajaxPrefilter("json jsonp",
  function(b, c, d) {
    var e = typeof b.data == "string" && /^application\/x\-www\-form\-urlencoded/.test(b.contentType);
    if (b.dataTypes[0] === "jsonp" || b.jsonp !== !1 && (cd.test(b.url) || e && cd.test(b.data))) {
      var g, h = b.jsonpCallback = f.isFunction(b.jsonpCallback) ? b.jsonpCallback() : b.jsonpCallback,
      i = a[h],
      j = b.url,
      k = b.data,
      l = "$1" + h + "$2";
      b.jsonp !== !1 && (j = j.replace(cd, l), b.url === j && (e && (k = k.replace(cd, l)), b.data === k && (j += (/\?/.test(j) ? "&": "?") + b.jsonp + "=" + h))),
      b.url = j,
      b.data = k,
      a[h] = function(a) {
        g = [a]
      },
      d.always(function() {
        a[h] = i,
        g && f.isFunction(i) && a[h](g[0])
      }),
      b.converters["script json"] = function() {
        g || f.error(h + " was not called");
        return g[0]
      },
      b.dataTypes[0] = "json";
      return "script"
    }
  }),
  f.ajaxSetup({
    accepts: {
      script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
    },
    contents: {
      script: /javascript|ecmascript/
    },
    converters: {
      "text script": function(a) {
        f.globalEval(a);
        return a
      }
    }
  }),
  f.ajaxPrefilter("script",
  function(a) {
    a.cache === b && (a.cache = !1),
    a.crossDomain && (a.type = "GET", a.global = !1)
  }),
  f.ajaxTransport("script",
  function(a) {
    if (a.crossDomain) {
      var d, e = c.head || c.getElementsByTagName("head")[0] || c.documentElement;
      return {
        send: function(f, g) {
          d = c.createElement("script"),
          d.async = "async",
          a.scriptCharset && (d.charset = a.scriptCharset),
          d.src = a.url,
          d.onload = d.onreadystatechange = function(a, c) {
            if (c || !d.readyState || /loaded|complete/.test(d.readyState)) d.onload = d.onreadystatechange = null,
            e && d.parentNode && e.removeChild(d),
            d = b,
            c || g(200, "success")
          },
          e.insertBefore(d, e.firstChild)
        },
        abort: function() {
          d && d.onload(0, 1)
        }
      }
    }
  });
  var ce = a.ActiveXObject ?
  function() {
    for (var a in cg) cg[a](0, 1)
  }: !1,
  cf = 0,
  cg;
  f.ajaxSettings.xhr = a.ActiveXObject ?
  function() {
    return ! this.isLocal && ch() || ci()
  }: ch,
  function(a) {
    f.extend(f.support, {
      ajax: !!a,
      cors: !!a && "withCredentials" in a
    })
  } (f.ajaxSettings.xhr()),
  f.support.ajax && f.ajaxTransport(function(c) {
    if (!c.crossDomain || f.support.cors) {
      var d;
      return {
        send: function(e, g) {
          var h = c.xhr(),
          i,
          j;
          c.username ? h.open(c.type, c.url, c.async, c.username, c.password) : h.open(c.type, c.url, c.async);
          if (c.xhrFields) for (j in c.xhrFields) h[j] = c.xhrFields[j];
          c.mimeType && h.overrideMimeType && h.overrideMimeType(c.mimeType),
          !c.crossDomain && !e["X-Requested-With"] && (e["X-Requested-With"] = "XMLHttpRequest");
          try {
            for (j in e) h.setRequestHeader(j, e[j])
          } catch(k) {}
          h.send(c.hasContent && c.data || null),
          d = function(a, e) {
            var j, k, l, m, n;
            try {
              if (d && (e || h.readyState === 4)) {
                d = b,
                i && (h.onreadystatechange = f.noop, ce && delete cg[i]);
                if (e) h.readyState !== 4 && h.abort();
                else {
                  j = h.status,
                  l = h.getAllResponseHeaders(),
                  m = {},
                  n = h.responseXML,
                  n && n.documentElement && (m.xml = n);
                  try {
                    m.text = h.responseText
                  } catch(a) {}
                  try {
                    k = h.statusText
                  } catch(o) {
                    k = ""
                  } ! j && c.isLocal && !c.crossDomain ? j = m.text ? 200 : 404 : j === 1223 && (j = 204)
                }
              }
            } catch(p) {
              e || g( - 1, p)
            }
            m && g(j, k, m, l)
          },
          !c.async || h.readyState === 4 ? d() : (i = ++cf, ce && (cg || (cg = {},
          f(a).unload(ce)), cg[i] = d), h.onreadystatechange = d)
        },
        abort: function() {
          d && d(0, 1)
        }
      }
    }
  });
  var cj = {},
  ck, cl, cm = /^(?:toggle|show|hide)$/,
  cn = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
  co, cp = [["height", "marginTop", "marginBottom", "paddingTop", "paddingBottom"], ["width", "marginLeft", "marginRight", "paddingLeft", "paddingRight"], ["opacity"]],
  cq;
  f.fn.extend({
    show: function(a, b, c) {
      var d, e;
      if (a || a === 0) return this.animate(ct("show", 3), a, b, c);
      for (var g = 0,
      h = this.length; g < h; g++) d = this[g],
      d.style && (e = d.style.display, !f._data(d, "olddisplay") && e === "none" && (e = d.style.display = ""), (e === "" && f.css(d, "display") === "none" || !f.contains(d.ownerDocument.documentElement, d)) && f._data(d, "olddisplay", cu(d.nodeName)));
      for (g = 0; g < h; g++) {
        d = this[g];
        if (d.style) {
          e = d.style.display;
          if (e === "" || e === "none") d.style.display = f._data(d, "olddisplay") || ""
        }
      }
      return this
    },
    hide: function(a, b, c) {
      if (a || a === 0) return this.animate(ct("hide", 3), a, b, c);
      var d, e, g = 0,
      h = this.length;
      for (; g < h; g++) d = this[g],
      d.style && (e = f.css(d, "display"), e !== "none" && !f._data(d, "olddisplay") && f._data(d, "olddisplay", e));
      for (g = 0; g < h; g++) this[g].style && (this[g].style.display = "none");
      return this
    },
    _toggle: f.fn.toggle,
    toggle: function(a, b, c) {
      var d = typeof a == "boolean";
      f.isFunction(a) && f.isFunction(b) ? this._toggle.apply(this, arguments) : a == null || d ? this.each(function() {
        var b = d ? a: f(this).is(":hidden");
        f(this)[b ? "show": "hide"]()
      }) : this.animate(ct("toggle", 3), a, b, c);
      return this
    },
    fadeTo: function(a, b, c, d) {
      return this.filter(":hidden").css("opacity", 0).show().end().animate({
        opacity: b
      },
      a, c, d)
    },
    animate: function(a, b, c, d) {
      function g() {
        e.queue === !1 && f._mark(this);
        var b = f.extend({},
        e),
        c = this.nodeType === 1,
        d = c && f(this).is(":hidden"),
        g,
        h,
        i,
        j,
        k,
        l,
        m,
        n,
        o,
        p,
        q;
        b.animatedProperties = {};
        for (i in a) {
          g = f.camelCase(i),
          i !== g && (a[g] = a[i], delete a[i]);
          if ((k = f.cssHooks[g]) && "expand" in k) {
            l = k.expand(a[g]),
            delete a[g];
            for (i in l) i in a || (a[i] = l[i])
          }
        }
        for (g in a) {
          h = a[g],
          f.isArray(h) ? (b.animatedProperties[g] = h[1], h = a[g] = h[0]) : b.animatedProperties[g] = b.specialEasing && b.specialEasing[g] || b.easing || "swing";
          if (h === "hide" && d || h === "show" && !d) return b.complete.call(this);
          c && (g === "height" || g === "width") && (b.overflow = [this.style.overflow, this.style.overflowX, this.style.overflowY], f.css(this, "display") === "inline" && f.css(this, "float") === "none" && (!f.support.inlineBlockNeedsLayout || cu(this.nodeName) === "inline" ? this.style.display = "inline-block": this.style.zoom = 1))
        }
        b.overflow != null && (this.style.overflow = "hidden");
        for (i in a) j = new f.fx(this, b, i),
        h = a[i],
        cm.test(h) ? (q = f._data(this, "toggle" + i) || (h === "toggle" ? d ? "show": "hide": 0), q ? (f._data(this, "toggle" + i, q === "show" ? "hide": "show"), j[q]()) : j[h]()) : (m = cn.exec(h), n = j.cur(), m ? (o = parseFloat(m[2]), p = m[3] || (f.cssNumber[i] ? "": "px"), p !== "px" && (f.style(this, i, (o || 1) + p), n = (o || 1) / j.cur() * n, f.style(this, i, n + p)), m[1] && (o = (m[1] === "-=" ? -1 : 1) * o + n), j.custom(n, o, p)) : j.custom(n, h, ""));
        return ! 0
      }
      var e = f.speed(b, c, d);
      if (f.isEmptyObject(a)) return this.each(e.complete, [!1]);
      a = f.extend({},
      a);
      return e.queue === !1 ? this.each(g) : this.queue(e.queue, g)
    },
    stop: function(a, c, d) {
      typeof a != "string" && (d = c, c = a, a = b),
      c && a !== !1 && this.queue(a || "fx", []);
      return this.each(function() {
        function h(a, b, c) {
          var e = b[c];
          f.removeData(a, c, !0),
          e.stop(d)
        }
        var b, c = !1,
        e = f.timers,
        g = f._data(this);
        d || f._unmark(!0, this);
        if (a == null) for (b in g) g[b] && g[b].stop && b.indexOf(".run") === b.length - 4 && h(this, g, b);
        else g[b = a + ".run"] && g[b].stop && h(this, g, b);
        for (b = e.length; b--;) e[b].elem === this && (a == null || e[b].queue === a) && (d ? e[b](!0) : e[b].saveState(), c = !0, e.splice(b, 1)); (!d || !c) && f.dequeue(this, a)
      })
    }
  }),
  f.each({
    slideDown: ct("show", 1),
    slideUp: ct("hide", 1),
    slideToggle: ct("toggle", 1),
    fadeIn: {
      opacity: "show"
    },
    fadeOut: {
      opacity: "hide"
    },
    fadeToggle: {
      opacity: "toggle"
    }
  },
  function(a, b) {
    f.fn[a] = function(a, c, d) {
      return this.animate(b, a, c, d)
    }
  }),
  f.extend({
    speed: function(a, b, c) {
      var d = a && typeof a == "object" ? f.extend({},
      a) : {
        complete: c || !c && b || f.isFunction(a) && a,
        duration: a,
        easing: c && b || b && !f.isFunction(b) && b
      };
      d.duration = f.fx.off ? 0 : typeof d.duration == "number" ? d.duration: d.duration in f.fx.speeds ? f.fx.speeds[d.duration] : f.fx.speeds._default;
      if (d.queue == null || d.queue === !0) d.queue = "fx";
      d.old = d.complete,
      d.complete = function(a) {
        f.isFunction(d.old) && d.old.call(this),
        d.queue ? f.dequeue(this, d.queue) : a !== !1 && f._unmark(this)
      };
      return d
    },
    easing: {
      linear: function(a) {
        return a
      },
      swing: function(a) {
        return - Math.cos(a * Math.PI) / 2 + .5
      }
    },
    timers: [],
    fx: function(a, b, c) {
      this.options = b,
      this.elem = a,
      this.prop = c,
      b.orig = b.orig || {}
    }
  }),
  f.fx.prototype = {
    update: function() {
      this.options.step && this.options.step.call(this.elem, this.now, this),
      (f.fx.step[this.prop] || f.fx.step._default)(this)
    },
    cur: function() {
      if (this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null)) return this.elem[this.prop];
      var a, b = f.css(this.elem, this.prop);
      return isNaN(a = parseFloat(b)) ? !b || b === "auto" ? 0 : b: a
    },
    custom: function(a, c, d) {
      function h(a) {
        return e.step(a)
      }
      var e = this,
      g = f.fx;
      this.startTime = cq || cr(),
      this.end = c,
      this.now = this.start = a,
      this.pos = this.state = 0,
      this.unit = d || this.unit || (f.cssNumber[this.prop] ? "": "px"),
      h.queue = this.options.queue,
      h.elem = this.elem,
      h.saveState = function() {
        f._data(e.elem, "fxshow" + e.prop) === b && (e.options.hide ? f._data(e.elem, "fxshow" + e.prop, e.start) : e.options.show && f._data(e.elem, "fxshow" + e.prop, e.end))
      },
      h() && f.timers.push(h) && !co && (co = setInterval(g.tick, g.interval))
    },
    show: function() {
      var a = f._data(this.elem, "fxshow" + this.prop);
      this.options.orig[this.prop] = a || f.style(this.elem, this.prop),
      this.options.show = !0,
      a !== b ? this.custom(this.cur(), a) : this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur()),
      f(this.elem).show()
    },
    hide: function() {
      this.options.orig[this.prop] = f._data(this.elem, "fxshow" + this.prop) || f.style(this.elem, this.prop),
      this.options.hide = !0,
      this.custom(this.cur(), 0)
    },
    step: function(a) {
      var b, c, d, e = cq || cr(),
      g = !0,
      h = this.elem,
      i = this.options;
      if (a || e >= i.duration + this.startTime) {
        this.now = this.end,
        this.pos = this.state = 1,
        this.update(),
        i.animatedProperties[this.prop] = !0;
        for (b in i.animatedProperties) i.animatedProperties[b] !== !0 && (g = !1);
        if (g) {
          i.overflow != null && !f.support.shrinkWrapBlocks && f.each(["", "X", "Y"],
          function(a, b) {
            h.style["overflow" + b] = i.overflow[a]
          }),
          i.hide && f(h).hide();
          if (i.hide || i.show) for (b in i.animatedProperties) f.style(h, b, i.orig[b]),
          f.removeData(h, "fxshow" + b, !0),
          f.removeData(h, "toggle" + b, !0);
          d = i.complete,
          d && (i.complete = !1, d.call(h))
        }
        return ! 1
      }
      i.duration == Infinity ? this.now = e: (c = e - this.startTime, this.state = c / i.duration, this.pos = f.easing[i.animatedProperties[this.prop]](this.state, c, 0, 1, i.duration), this.now = this.start + (this.end - this.start) * this.pos),
      this.update();
      return ! 0
    }
  },
  f.extend(f.fx, {
    tick: function() {
      var a, b = f.timers,
      c = 0;
      for (; c < b.length; c++) a = b[c],
      !a() && b[c] === a && b.splice(c--, 1);
      b.length || f.fx.stop()
    },
    interval: 13,
    stop: function() {
      clearInterval(co),
      co = null
    },
    speeds: {
      slow: 600,
      fast: 200,
      _default: 400
    },
    step: {
      opacity: function(a) {
        f.style(a.elem, "opacity", a.now)
      },
      _default: function(a) {
        a.elem.style && a.elem.style[a.prop] != null ? a.elem.style[a.prop] = a.now + a.unit: a.elem[a.prop] = a.now
      }
    }
  }),
  f.each(cp.concat.apply([], cp),
  function(a, b) {
    b.indexOf("margin") && (f.fx.step[b] = function(a) {
      f.style(a.elem, b, Math.max(0, a.now) + a.unit)
    })
  }),
  f.expr && f.expr.filters && (f.expr.filters.animated = function(a) {
    return f.grep(f.timers,
    function(b) {
      return a === b.elem
    }).length
  });
  var cv, cw = /^t(?:able|d|h)$/i,
  cx = /^(?:body|html)$/i;
  "getBoundingClientRect" in c.documentElement ? cv = function(a, b, c, d) {
    try {
      d = a.getBoundingClientRect()
    } catch(e) {}
    if (!d || !f.contains(c, a)) return d ? {
      top: d.top,
      left: d.left
    }: {
      top: 0,
      left: 0
    };
    var g = b.body,
    h = cy(b),
    i = c.clientTop || g.clientTop || 0,
    j = c.clientLeft || g.clientLeft || 0,
    k = h.pageYOffset || f.support.boxModel && c.scrollTop || g.scrollTop,
    l = h.pageXOffset || f.support.boxModel && c.scrollLeft || g.scrollLeft,
    m = d.top + k - i,
    n = d.left + l - j;
    return {
      top: m,
      left: n
    }
  }: cv = function(a, b, c) {
    var d, e = a.offsetParent,
    g = a,
    h = b.body,
    i = b.defaultView,
    j = i ? i.getComputedStyle(a, null) : a.currentStyle,
    k = a.offsetTop,
    l = a.offsetLeft;
    while ((a = a.parentNode) && a !== h && a !== c) {
      if (f.support.fixedPosition && j.position === "fixed") break;
      d = i ? i.getComputedStyle(a, null) : a.currentStyle,
      k -= a.scrollTop,
      l -= a.scrollLeft,
      a === e && (k += a.offsetTop, l += a.offsetLeft, f.support.doesNotAddBorder && (!f.support.doesAddBorderForTableAndCells || !cw.test(a.nodeName)) && (k += parseFloat(d.borderTopWidth) || 0, l += parseFloat(d.borderLeftWidth) || 0), g = e, e = a.offsetParent),
      f.support.subtractsBorderForOverflowNotVisible && d.overflow !== "visible" && (k += parseFloat(d.borderTopWidth) || 0, l += parseFloat(d.borderLeftWidth) || 0),
      j = d
    }
    if (j.position === "relative" || j.position === "static") k += h.offsetTop,
    l += h.offsetLeft;
    f.support.fixedPosition && j.position === "fixed" && (k += Math.max(c.scrollTop, h.scrollTop), l += Math.max(c.scrollLeft, h.scrollLeft));
    return {
      top: k,
      left: l
    }
  },
  f.fn.offset = function(a) {
    if (arguments.length) return a === b ? this: this.each(function(b) {
      f.offset.setOffset(this, a, b)
    });
    var c = this[0],
    d = c && c.ownerDocument;
    if (!d) return null;
    if (c === d.body) return f.offset.bodyOffset(c);
    return cv(c, d, d.documentElement)
  },
  f.offset = {
    bodyOffset: function(a) {
      var b = a.offsetTop,
      c = a.offsetLeft;
      f.support.doesNotIncludeMarginInBodyOffset && (b += parseFloat(f.css(a, "marginTop")) || 0, c += parseFloat(f.css(a, "marginLeft")) || 0);
      return {
        top: b,
        left: c
      }
    },
    setOffset: function(a, b, c) {
      var d = f.css(a, "position");
      d === "static" && (a.style.position = "relative");
      var e = f(a),
      g = e.offset(),
      h = f.css(a, "top"),
      i = f.css(a, "left"),
      j = (d === "absolute" || d === "fixed") && f.inArray("auto", [h, i]) > -1,
      k = {},
      l = {},
      m,
      n;
      j ? (l = e.position(), m = l.top, n = l.left) : (m = parseFloat(h) || 0, n = parseFloat(i) || 0),
      f.isFunction(b) && (b = b.call(a, c, g)),
      b.top != null && (k.top = b.top - g.top + m),
      b.left != null && (k.left = b.left - g.left + n),
      "using" in b ? b.using.call(a, k) : e.css(k)
    }
  },
  f.fn.extend({
    position: function() {
      if (!this[0]) return null;
      var a = this[0],
      b = this.offsetParent(),
      c = this.offset(),
      d = cx.test(b[0].nodeName) ? {
        top: 0,
        left: 0
      }: b.offset();
      c.top -= parseFloat(f.css(a, "marginTop")) || 0,
      c.left -= parseFloat(f.css(a, "marginLeft")) || 0,
      d.top += parseFloat(f.css(b[0], "borderTopWidth")) || 0,
      d.left += parseFloat(f.css(b[0], "borderLeftWidth")) || 0;
      return {
        top: c.top - d.top,
        left: c.left - d.left
      }
    },
    offsetParent: function() {
      return this.map(function() {
        var a = this.offsetParent || c.body;
        while (a && !cx.test(a.nodeName) && f.css(a, "position") === "static") a = a.offsetParent;
        return a
      })
    }
  }),
  f.each({
    scrollLeft: "pageXOffset",
    scrollTop: "pageYOffset"
  },
  function(a, c) {
    var d = /Y/.test(c);
    f.fn[a] = function(e) {
      return f.access(this,
      function(a, e, g) {
        var h = cy(a);
        if (g === b) return h ? c in h ? h[c] : f.support.boxModel && h.document.documentElement[e] || h.document.body[e] : a[e];
        h ? h.scrollTo(d ? f(h).scrollLeft() : g, d ? g: f(h).scrollTop()) : a[e] = g
      },
      a, e, arguments.length, null)
    }
  }),
  f.each({
    Height: "height",
    Width: "width"
  },
  function(a, c) {
    var d = "client" + a,
    e = "scroll" + a,
    g = "offset" + a;
    f.fn["inner" + a] = function() {
      var a = this[0];
      return a ? a.style ? parseFloat(f.css(a, c, "padding")) : this[c]() : null
    },
    f.fn["outer" + a] = function(a) {
      var b = this[0];
      return b ? b.style ? parseFloat(f.css(b, c, a ? "margin": "border")) : this[c]() : null
    },
    f.fn[c] = function(a) {
      return f.access(this,
      function(a, c, h) {
        var i, j, k, l;
        if (f.isWindow(a)) {
          i = a.document,
          j = i.documentElement[d];
          return f.support.boxModel && j || i.body && i.body[d] || j
        }
        if (a.nodeType === 9) {
          i = a.documentElement;
          if (i[d] >= i[e]) return i[d];
          return Math.max(a.body[e], i[e], a.body[g], i[g])
        }
        if (h === b) {
          k = f.css(a, c),
          l = parseFloat(k);
          return f.isNumeric(l) ? l: k
        }
        f(a).css(c, h)
      },
      c, a, arguments.length, null)
    }
  }),
  a.jQuery = a.$ = f,
  typeof define == "function" && define.amd && define.amd.jQuery && define("jquery", [],
  function() {
    return f
  })
})(window); (function(c, j) {
  function k(a, b) {
    var d = a.nodeName.toLowerCase();
    if ("area" === d) {
      b = a.parentNode;
      d = b.name;
      if (!a.href || !d || b.nodeName.toLowerCase() !== "map") return false;
      a = c("img[usemap=#" + d + "]")[0];
      return !! a && l(a)
    }
    return (/input|select|textarea|button|object/.test(d) ? !a.disabled: "a" == d ? a.href || b: b) && l(a)
  }
  function l(a) {
    return ! c(a).parents().andSelf().filter(function() {
      return c.curCSS(this, "visibility") === "hidden" || c.expr.filters.hidden(this)
    }).length
  }
  c.ui = c.ui || {};
  if (!c.ui.version) {
    c.extend(c.ui, {
      version: "1.8.16",
      keyCode: {
        ALT: 18,
        BACKSPACE: 8,
        CAPS_LOCK: 20,
        COMMA: 188,
        COMMAND: 91,
        COMMAND_LEFT: 91,
        COMMAND_RIGHT: 93,
        CONTROL: 17,
        DELETE: 46,
        DOWN: 40,
        END: 35,
        ENTER: 13,
        ESCAPE: 27,
        HOME: 36,
        INSERT: 45,
        LEFT: 37,
        MENU: 93,
        NUMPAD_ADD: 107,
        NUMPAD_DECIMAL: 110,
        NUMPAD_DIVIDE: 111,
        NUMPAD_ENTER: 108,
        NUMPAD_MULTIPLY: 106,
        NUMPAD_SUBTRACT: 109,
        PAGE_DOWN: 34,
        PAGE_UP: 33,
        PERIOD: 190,
        RIGHT: 39,
        SHIFT: 16,
        SPACE: 32,
        TAB: 9,
        UP: 38,
        WINDOWS: 91
      }
    });
    c.fn.extend({
      propAttr: c.fn.prop || c.fn.attr,
      _focus: c.fn.focus,
      focus: function(a, b) {
        return typeof a === "number" ? this.each(function() {
          var d = this;
          setTimeout(function() {
            c(d).focus();
            b && b.call(d)
          },
          a)
        }) : this._focus.apply(this, arguments)
      },
      scrollParent: function() {
        var a;
        a = c.browser.msie && /(static|relative)/.test(this.css("position")) || /absolute/.test(this.css("position")) ? this.parents().filter(function() {
          return /(relative|absolute|fixed)/.test(c.curCSS(this, "position", 1)) && /(auto|scroll)/.test(c.curCSS(this, "overflow", 1) + c.curCSS(this, "overflow-y", 1) + c.curCSS(this, "overflow-x", 1))
        }).eq(0) : this.parents().filter(function() {
          return /(auto|scroll)/.test(c.curCSS(this, "overflow", 1) + c.curCSS(this, "overflow-y", 1) + c.curCSS(this, "overflow-x", 1))
        }).eq(0);
        return /fixed/.test(this.css("position")) || !a.length ? c(document) : a
      },
      zIndex: function(a) {
        if (a !== j) return this.css("zIndex", a);
        if (this.length) {
          a = c(this[0]);
          for (var b; a.length && a[0] !== document;) {
            b = a.css("position");
            if (b === "absolute" || b === "relative" || b === "fixed") {
              b = parseInt(a.css("zIndex"), 10);
              if (!isNaN(b) && b !== 0) return b
            }
            a = a.parent()
          }
        }
        return 0
      },
      disableSelection: function() {
        return this.bind((c.support.selectstart ? "selectstart": "mousedown") + ".ui-disableSelection",
        function(a) {
          a.preventDefault()
        })
      },
      enableSelection: function() {
        return this.unbind(".ui-disableSelection")
      }
    });
    c.each(["Width", "Height"],
    function(a, b) {
      function d(f, g, m, n) {
        c.each(e,
        function() {
          g -= parseFloat(c.curCSS(f, "padding" + this, true)) || 0;
          if (m) g -= parseFloat(c.curCSS(f, "border" + this + "Width", true)) || 0;
          if (n) g -= parseFloat(c.curCSS(f, "margin" + this, true)) || 0
        });
        return g
      }
      var e = b === "Width" ? ["Left", "Right"] : ["Top", "Bottom"],
      h = b.toLowerCase(),
      i = {
        innerWidth: c.fn.innerWidth,
        innerHeight: c.fn.innerHeight,
        outerWidth: c.fn.outerWidth,
        outerHeight: c.fn.outerHeight
      };
      c.fn["inner" + b] = function(f) {
        if (f === j) return i["inner" + b].call(this);
        return this.each(function() {
          c(this).css(h, d(this, f) + "px")
        })
      };
      c.fn["outer" + b] = function(f, g) {
        if (typeof f !== "number") return i["outer" + b].call(this, f);
        return this.each(function() {
          c(this).css(h, d(this, f, true, g) + "px")
        })
      }
    });
    c.extend(c.expr[":"], {
      data: function(a, b, d) {
        return !! c.data(a, d[3])
      },
      focusable: function(a) {
        return k(a, !isNaN(c.attr(a, "tabindex")))
      },
      tabbable: function(a) {
        var b = c.attr(a, "tabindex"),
        d = isNaN(b);
        return (d || b >= 0) && k(a, !d)
      }
    });
    c(function() {
      var a = document.body,
      b = a.appendChild(b = document.createElement("div"));
      c.extend(b.style, {
        minHeight: "100px",
        height: "auto",
        padding: 0,
        borderWidth: 0
      });
      c.support.minHeight = b.offsetHeight === 100;
      c.support.selectstart = "onselectstart" in b;
      a.removeChild(b).style.display = "none"
    });
    c.extend(c.ui, {
      plugin: {
        add: function(a, b, d) {
          a = c.ui[a].prototype;
          for (var e in d) {
            a.plugins[e] = a.plugins[e] || [];
            a.plugins[e].push([b, d[e]])
          }
        },
        call: function(a, b, d) {
          if ((b = a.plugins[b]) && a.element[0].parentNode) for (var e = 0; e < b.length; e++) a.options[b[e][0]] && b[e][1].apply(a.element, d)
        }
      },
      contains: function(a, b) {
        return document.compareDocumentPosition ? a.compareDocumentPosition(b) & 16 : a !== b && a.contains(b)
      },
      hasScroll: function(a, b) {
        if (c(a).css("overflow") === "hidden") return false;
        b = b && b === "left" ? "scrollLeft": "scrollTop";
        var d = false;
        if (a[b] > 0) return true;
        a[b] = 1;
        d = a[b] > 0;
        a[b] = 0;
        return d
      },
      isOverAxis: function(a, b, d) {
        return a > b && a < b + d
      },
      isOver: function(a, b, d, e, h, i) {
        return c.ui.isOverAxis(a, d, h) && c.ui.isOverAxis(b, e, i)
      }
    })
  }
})(jQuery);; (function(b, j) {
  if (b.cleanData) {
    var k = b.cleanData;
    b.cleanData = function(a) {
      for (var c = 0,
      d; (d = a[c]) != null; c++) try {
        b(d).triggerHandler("remove")
      } catch(e) {}
      k(a)
    }
  } else {
    var l = b.fn.remove;
    b.fn.remove = function(a, c) {
      return this.each(function() {
        if (!c) if (!a || b.filter(a, [this]).length) b("*", this).add([this]).each(function() {
          try {
            b(this).triggerHandler("remove")
          } catch(d) {}
        });
        return l.call(b(this), a, c)
      })
    }
  }
  b.widget = function(a, c, d) {
    var e = a.split(".")[0],
    f;
    a = a.split(".")[1];
    f = e + "-" + a;
    if (!d) {
      d = c;
      c = b.Widget
    }
    b.expr[":"][f] = function(h) {
      return !! b.data(h, a)
    };
    b[e] = b[e] || {};
    b[e][a] = function(h, g) {
      arguments.length && this._createWidget(h, g)
    };
    c = new c;
    c.options = b.extend(true, {},
    c.options);
    b[e][a].prototype = b.extend(true, c, {
      namespace: e,
      widgetName: a,
      widgetEventPrefix: b[e][a].prototype.widgetEventPrefix || a,
      widgetBaseClass: f
    },
    d);
    b.widget.bridge(a, b[e][a])
  };
  b.widget.bridge = function(a, c) {
    b.fn[a] = function(d) {
      var e = typeof d === "string",
      f = Array.prototype.slice.call(arguments, 1),
      h = this;
      d = !e && f.length ? b.extend.apply(null, [true, d].concat(f)) : d;
      if (e && d.charAt(0) === "_") return h;
      e ? this.each(function() {
        var g = b.data(this, a),
        i = g && b.isFunction(g[d]) ? g[d].apply(g, f) : g;
        if (i !== g && i !== j) {
          h = i;
          return false
        }
      }) : this.each(function() {
        var g = b.data(this, a);
        g ? g.option(d || {})._init() : b.data(this, a, new c(d, this))
      });
      return h
    }
  };
  b.Widget = function(a, c) {
    arguments.length && this._createWidget(a, c)
  };
  b.Widget.prototype = {
    widgetName: "widget",
    widgetEventPrefix: "",
    options: {
      disabled: false
    },
    _createWidget: function(a, c) {
      b.data(c, this.widgetName, this);
      this.element = b(c);
      this.options = b.extend(true, {},
      this.options, this._getCreateOptions(), a);
      var d = this;
      this.element.bind("remove." + this.widgetName,
      function() {
        d.destroy()
      });
      this._create();
      this._trigger("create");
      this._init()
    },
    _getCreateOptions: function() {
      return b.metadata && b.metadata.get(this.element[0])[this.widgetName]
    },
    _create: function() {},
    _init: function() {},
    destroy: function() {
      this.element.unbind("." + this.widgetName).removeData(this.widgetName);
      this.widget().unbind("." + this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass + "-disabled ui-state-disabled")
    },
    widget: function() {
      return this.element
    },
    option: function(a, c) {
      var d = a;
      if (arguments.length === 0) return b.extend({},
      this.options);
      if (typeof a === "string") {
        if (c === j) return this.options[a];
        d = {};
        d[a] = c
      }
      this._setOptions(d);
      return this
    },
    _setOptions: function(a) {
      var c = this;
      b.each(a,
      function(d, e) {
        c._setOption(d, e)
      });
      return this
    },
    _setOption: function(a, c) {
      this.options[a] = c;
      if (a === "disabled") this.widget()[c ? "addClass": "removeClass"](this.widgetBaseClass + "-disabled ui-state-disabled").attr("aria-disabled", c);
      return this
    },
    enable: function() {
      return this._setOption("disabled", false)
    },
    disable: function() {
      return this._setOption("disabled", true)
    },
    _trigger: function(a, c, d) {
      var e = this.options[a];
      c = b.Event(c);
      c.type = (a === this.widgetEventPrefix ? a: this.widgetEventPrefix + a).toLowerCase();
      d = d || {};
      if (c.originalEvent) {
        a = b.event.props.length;
        for (var f; a;) {
          f = b.event.props[--a];
          c[f] = c.originalEvent[f]
        }
      }
      this.element.trigger(c, d);
      return ! (b.isFunction(e) && e.call(this.element[0], c, d) === false || c.isDefaultPrevented())
    }
  }
})(jQuery);; (function(b) {
  var d = false;
  b(document).mouseup(function() {
    d = false
  });
  b.widget("ui.mouse", {
    options: {
      cancel: ":input,option",
      distance: 1,
      delay: 0
    },
    _mouseInit: function() {
      var a = this;
      this.element.bind("mousedown." + this.widgetName,
      function(c) {
        return a._mouseDown(c)
      }).bind("click." + this.widgetName,
      function(c) {
        if (true === b.data(c.target, a.widgetName + ".preventClickEvent")) {
          b.removeData(c.target, a.widgetName + ".preventClickEvent");
          c.stopImmediatePropagation();
          return false
        }
      });
      this.started = false
    },
    _mouseDestroy: function() {
      this.element.unbind("." + this.widgetName)
    },
    _mouseDown: function(a) {
      if (!d) {
        this._mouseStarted && this._mouseUp(a);
        this._mouseDownEvent = a;
        var c = this,
        f = a.which == 1,
        g = typeof this.options.cancel == "string" && a.target.nodeName ? b(a.target).closest(this.options.cancel).length: false;
        if (!f || g || !this._mouseCapture(a)) return true;
        this.mouseDelayMet = !this.options.delay;
        if (!this.mouseDelayMet) this._mouseDelayTimer = setTimeout(function() {
          c.mouseDelayMet = true
        },
        this.options.delay);
        if (this._mouseDistanceMet(a) && this._mouseDelayMet(a)) {
          this._mouseStarted = this._mouseStart(a) !== false;
          if (!this._mouseStarted) {
            a.preventDefault();
            return true
          }
        }
        true === b.data(a.target, this.widgetName + ".preventClickEvent") && b.removeData(a.target, this.widgetName + ".preventClickEvent");
        this._mouseMoveDelegate = function(e) {
          return c._mouseMove(e)
        };
        this._mouseUpDelegate = function(e) {
          return c._mouseUp(e)
        };
        b(document).bind("mousemove." + this.widgetName, this._mouseMoveDelegate).bind("mouseup." + this.widgetName, this._mouseUpDelegate);
        a.preventDefault();
        return d = true
      }
    },
    _mouseMove: function(a) {
      if (b.browser.msie && !(document.documentMode >= 9) && !a.button) return this._mouseUp(a);
      if (this._mouseStarted) {
        this._mouseDrag(a);
        return a.preventDefault()
      }
      if (this._mouseDistanceMet(a) && this._mouseDelayMet(a))(this._mouseStarted = this._mouseStart(this._mouseDownEvent, a) !== false) ? this._mouseDrag(a) : this._mouseUp(a);
      return ! this._mouseStarted
    },
    _mouseUp: function(a) {
      b(document).unbind("mousemove." + this.widgetName, this._mouseMoveDelegate).unbind("mouseup." + this.widgetName, this._mouseUpDelegate);
      if (this._mouseStarted) {
        this._mouseStarted = false;
        a.target == this._mouseDownEvent.target && b.data(a.target, this.widgetName + ".preventClickEvent", true);
        this._mouseStop(a)
      }
      return false
    },
    _mouseDistanceMet: function(a) {
      return Math.max(Math.abs(this._mouseDownEvent.pageX - a.pageX), Math.abs(this._mouseDownEvent.pageY - a.pageY)) >= this.options.distance
    },
    _mouseDelayMet: function() {
      return this.mouseDelayMet
    },
    _mouseStart: function() {},
    _mouseDrag: function() {},
    _mouseStop: function() {},
    _mouseCapture: function() {
      return true
    }
  })
})(jQuery);; (function(c) {
  c.ui = c.ui || {};
  var n = /left|center|right/,
  o = /top|center|bottom/,
  t = c.fn.position,
  u = c.fn.offset;
  c.fn.position = function(b) {
    if (!b || !b.of) return t.apply(this, arguments);
    b = c.extend({},
    b);
    var a = c(b.of),
    d = a[0],
    g = (b.collision || "flip").split(" "),
    e = b.offset ? b.offset.split(" ") : [0, 0],
    h,
    k,
    j;
    if (d.nodeType === 9) {
      h = a.width();
      k = a.height();
      j = {
        top: 0,
        left: 0
      }
    } else if (d.setTimeout) {
      h = a.width();
      k = a.height();
      j = {
        top: a.scrollTop(),
        left: a.scrollLeft()
      }
    } else if (d.preventDefault) {
      b.at = "left top";
      h = k = 0;
      j = {
        top: b.of.pageY,
        left: b.of.pageX
      }
    } else {
      h = a.outerWidth();
      k = a.outerHeight();
      j = a.offset()
    }
    c.each(["my", "at"],
    function() {
      var f = (b[this] || "").split(" ");
      if (f.length === 1) f = n.test(f[0]) ? f.concat(["center"]) : o.test(f[0]) ? ["center"].concat(f) : ["center", "center"];
      f[0] = n.test(f[0]) ? f[0] : "center";
      f[1] = o.test(f[1]) ? f[1] : "center";
      b[this] = f
    });
    if (g.length === 1) g[1] = g[0];
    e[0] = parseInt(e[0], 10) || 0;
    if (e.length === 1) e[1] = e[0];
    e[1] = parseInt(e[1], 10) || 0;
    if (b.at[0] === "right") j.left += h;
    else if (b.at[0] === "center") j.left += h / 2;
    if (b.at[1] === "bottom") j.top += k;
    else if (b.at[1] === "center") j.top += k / 2;
    j.left += e[0];
    j.top += e[1];
    return this.each(function() {
      var f = c(this),
      l = f.outerWidth(),
      m = f.outerHeight(),
      p = parseInt(c.curCSS(this, "marginLeft", true)) || 0,
      q = parseInt(c.curCSS(this, "marginTop", true)) || 0,
      v = l + p + (parseInt(c.curCSS(this, "marginRight", true)) || 0),
      w = m + q + (parseInt(c.curCSS(this, "marginBottom", true)) || 0),
      i = c.extend({},
      j),
      r;
      if (b.my[0] === "right") i.left -= l;
      else if (b.my[0] === "center") i.left -= l / 2;
      if (b.my[1] === "bottom") i.top -= m;
      else if (b.my[1] === "center") i.top -= m / 2;
      i.left = Math.round(i.left);
      i.top = Math.round(i.top);
      r = {
        left: i.left - p,
        top: i.top - q
      };
      c.each(["left", "top"],
      function(s, x) {
        c.ui.position[g[s]] && c.ui.position[g[s]][x](i, {
          targetWidth: h,
          targetHeight: k,
          elemWidth: l,
          elemHeight: m,
          collisionPosition: r,
          collisionWidth: v,
          collisionHeight: w,
          offset: e,
          my: b.my,
          at: b.at
        })
      });
      c.fn.bgiframe && f.bgiframe();
      f.offset(c.extend(i, {
        using: b.using
      }))
    })
  };
  c.ui.position = {
    fit: {
      left: function(b, a) {
        var d = c(window);
        d = a.collisionPosition.left + a.collisionWidth - d.width() - d.scrollLeft();
        b.left = d > 0 ? b.left - d: Math.max(b.left - a.collisionPosition.left, b.left)
      },
      top: function(b, a) {
        var d = c(window);
        d = a.collisionPosition.top + a.collisionHeight - d.height() - d.scrollTop();
        b.top = d > 0 ? b.top - d: Math.max(b.top - a.collisionPosition.top, b.top)
      }
    },
    flip: {
      left: function(b, a) {
        if (a.at[0] !== "center") {
          var d = c(window);
          d = a.collisionPosition.left + a.collisionWidth - d.width() - d.scrollLeft();
          var g = a.my[0] === "left" ? -a.elemWidth: a.my[0] === "right" ? a.elemWidth: 0,
          e = a.at[0] === "left" ? a.targetWidth: -a.targetWidth,
          h = -2 * a.offset[0];
          b.left += a.collisionPosition.left < 0 ? g + e + h: d > 0 ? g + e + h: 0
        }
      },
      top: function(b, a) {
        if (a.at[1] !== "center") {
          var d = c(window);
          d = a.collisionPosition.top + a.collisionHeight - d.height() - d.scrollTop();
          var g = a.my[1] === "top" ? -a.elemHeight: a.my[1] === "bottom" ? a.elemHeight: 0,
          e = a.at[1] === "top" ? a.targetHeight: -a.targetHeight,
          h = -2 * a.offset[1];
          b.top += a.collisionPosition.top < 0 ? g + e + h: d > 0 ? g + e + h: 0
        }
      }
    }
  };
  if (!c.offset.setOffset) {
    c.offset.setOffset = function(b, a) {
      if (/static/.test(c.curCSS(b, "position"))) b.style.position = "relative";
      var d = c(b),
      g = d.offset(),
      e = parseInt(c.curCSS(b, "top", true), 10) || 0,
      h = parseInt(c.curCSS(b, "left", true), 10) || 0;
      g = {
        top: a.top - g.top + e,
        left: a.left - g.left + h
      };
      "using" in a ? a.using.call(b, g) : d.css(g)
    };
    c.fn.offset = function(b) {
      var a = this[0];
      if (!a || !a.ownerDocument) return null;
      if (b) return this.each(function() {
        c.offset.setOffset(this, b)
      });
      return u.call(this)
    }
  }
})(jQuery);; (function(d) {
  d.widget("ui.draggable", d.ui.mouse, {
    widgetEventPrefix: "drag",
    options: {
      addClasses: true,
      appendTo: "parent",
      axis: false,
      connectToSortable: false,
      containment: false,
      cursor: "auto",
      cursorAt: false,
      grid: false,
      handle: false,
      helper: "original",
      iframeFix: false,
      opacity: false,
      refreshPositions: false,
      revert: false,
      revertDuration: 500,
      scope: "default",
      scroll: true,
      scrollSensitivity: 20,
      scrollSpeed: 20,
      snap: false,
      snapMode: "both",
      snapTolerance: 20,
      stack: false,
      zIndex: false
    },
    _create: function() {
      if (this.options.helper == "original" && !/^(?:r|a|f)/.test(this.element.css("position"))) this.element[0].style.position = "relative";
      this.options.addClasses && this.element.addClass("ui-draggable");
      this.options.disabled && this.element.addClass("ui-draggable-disabled");
      this._mouseInit()
    },
    destroy: function() {
      if (this.element.data("draggable")) {
        this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");
        this._mouseDestroy();
        return this
      }
    },
    _mouseCapture: function(a) {
      var b = this.options;
      if (this.helper || b.disabled || d(a.target).is(".ui-resizable-handle")) return false;
      this.handle = this._getHandle(a);
      if (!this.handle) return false;
      if (b.iframeFix) d(b.iframeFix === true ? "iframe": b.iframeFix).each(function() {
        d('<div class="ui-draggable-iframeFix" style="background: #fff;"></div>').css({
          width: this.offsetWidth + "px",
          height: this.offsetHeight + "px",
          position: "absolute",
          opacity: "0.001",
          zIndex: 1E3
        }).css(d(this).offset()).appendTo("body")
      });
      return true
    },
    _mouseStart: function(a) {
      var b = this.options;
      this.helper = this._createHelper(a);
      this._cacheHelperProportions();
      if (d.ui.ddmanager) d.ui.ddmanager.current = this;
      this._cacheMargins();
      this.cssPosition = this.helper.css("position");
      this.scrollParent = this.helper.scrollParent();
      this.offset = this.positionAbs = this.element.offset();
      this.offset = {
        top: this.offset.top - this.margins.top,
        left: this.offset.left - this.margins.left
      };
      d.extend(this.offset, {
        click: {
          left: a.pageX - this.offset.left,
          top: a.pageY - this.offset.top
        },
        parent: this._getParentOffset(),
        relative: this._getRelativeOffset()
      });
      this.originalPosition = this.position = this._generatePosition(a);
      this.originalPageX = a.pageX;
      this.originalPageY = a.pageY;
      b.cursorAt && this._adjustOffsetFromHelper(b.cursorAt);
      b.containment && this._setContainment();
      if (this._trigger("start", a) === false) {
        this._clear();
        return false
      }
      this._cacheHelperProportions();
      d.ui.ddmanager && !b.dropBehaviour && d.ui.ddmanager.prepareOffsets(this, a);
      this.helper.addClass("ui-draggable-dragging");
      this._mouseDrag(a, true);
      d.ui.ddmanager && d.ui.ddmanager.dragStart(this, a);
      return true
    },
    _mouseDrag: function(a, b) {
      this.position = this._generatePosition(a);
      this.positionAbs = this._convertPositionTo("absolute");
      if (!b) {
        b = this._uiHash();
        if (this._trigger("drag", a, b) === false) {
          this._mouseUp({});
          return false
        }
        this.position = b.position
      }
      if (!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left + "px";
      if (!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top + "px";
      d.ui.ddmanager && d.ui.ddmanager.drag(this, a);
      return false
    },
    _mouseStop: function(a) {
      var b = false;
      if (d.ui.ddmanager && !this.options.dropBehaviour) b = d.ui.ddmanager.drop(this, a);
      if (this.dropped) {
        b = this.dropped;
        this.dropped = false
      }
      if ((!this.element[0] || !this.element[0].parentNode) && this.options.helper == "original") return false;
      if (this.options.revert == "invalid" && !b || this.options.revert == "valid" && b || this.options.revert === true || d.isFunction(this.options.revert) && this.options.revert.call(this.element, b)) {
        var c = this;
        d(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10),
        function() {
          c._trigger("stop", a) !== false && c._clear()
        })
      } else this._trigger("stop", a) !== false && this._clear();
      return false
    },
    _mouseUp: function(a) {
      this.options.iframeFix === true && d("div.ui-draggable-iframeFix").each(function() {
        this.parentNode.removeChild(this)
      });
      d.ui.ddmanager && d.ui.ddmanager.dragStop(this, a);
      return d.ui.mouse.prototype._mouseUp.call(this, a)
    },
    cancel: function() {
      this.helper.is(".ui-draggable-dragging") ? this._mouseUp({}) : this._clear();
      return this
    },
    _getHandle: function(a) {
      var b = !this.options.handle || !d(this.options.handle, this.element).length ? true: false;
      d(this.options.handle, this.element).find("*").andSelf().each(function() {
        if (this == a.target) b = true
      });
      return b
    },
    _createHelper: function(a) {
      var b = this.options;
      a = d.isFunction(b.helper) ? d(b.helper.apply(this.element[0], [a])) : b.helper == "clone" ? this.element.clone().removeAttr("id") : this.element;
      a.parents("body").length || a.appendTo(b.appendTo == "parent" ? this.element[0].parentNode: b.appendTo);
      a[0] != this.element[0] && !/(fixed|absolute)/.test(a.css("position")) && a.css("position", "absolute");
      return a
    },
    _adjustOffsetFromHelper: function(a) {
      if (typeof a == "string") a = a.split(" ");
      if (d.isArray(a)) a = {
        left: +a[0],
        top: +a[1] || 0
      };
      if ("left" in a) this.offset.click.left = a.left + this.margins.left;
      if ("right" in a) this.offset.click.left = this.helperProportions.width - a.right + this.margins.left;
      if ("top" in a) this.offset.click.top = a.top + this.margins.top;
      if ("bottom" in a) this.offset.click.top = this.helperProportions.height - a.bottom + this.margins.top
    },
    _getParentOffset: function() {
      this.offsetParent = this.helper.offsetParent();
      var a = this.offsetParent.offset();
      if (this.cssPosition == "absolute" && this.scrollParent[0] != document && d.ui.contains(this.scrollParent[0], this.offsetParent[0])) {
        a.left += this.scrollParent.scrollLeft();
        a.top += this.scrollParent.scrollTop()
      }
      if (this.offsetParent[0] == document.body || this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == "html" && d.browser.msie) a = {
        top: 0,
        left: 0
      };
      return {
        top: a.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
        left: a.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
      }
    },
    _getRelativeOffset: function() {
      if (this.cssPosition == "relative") {
        var a = this.element.position();
        return {
          top: a.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(),
          left: a.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft()
        }
      } else return {
        top: 0,
        left: 0
      }
    },
    _cacheMargins: function() {
      this.margins = {
        left: parseInt(this.element.css("marginLeft"), 10) || 0,
        top: parseInt(this.element.css("marginTop"), 10) || 0,
        right: parseInt(this.element.css("marginRight"), 10) || 0,
        bottom: parseInt(this.element.css("marginBottom"), 10) || 0
      }
    },
    _cacheHelperProportions: function() {
      this.helperProportions = {
        width: this.helper.outerWidth(),
        height: this.helper.outerHeight()
      }
    },
    _setContainment: function() {
      var a = this.options;
      if (a.containment == "parent") a.containment = this.helper[0].parentNode;
      if (a.containment == "document" || a.containment == "window") this.containment = [a.containment == "document" ? 0 : d(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, a.containment == "document" ? 0 : d(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, (a.containment == "document" ? 0 : d(window).scrollLeft()) + d(a.containment == "document" ? document: window).width() - this.helperProportions.width - this.margins.left, (a.containment == "document" ? 0 : d(window).scrollTop()) + (d(a.containment == "document" ? document: window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top];
      if (!/^(document|window|parent)$/.test(a.containment) && a.containment.constructor != Array) {
        a = d(a.containment);
        var b = a[0];
        if (b) {
          a.offset();
          var c = d(b).css("overflow") != "hidden";
          this.containment = [(parseInt(d(b).css("borderLeftWidth"), 10) || 0) + (parseInt(d(b).css("paddingLeft"), 10) || 0), (parseInt(d(b).css("borderTopWidth"), 10) || 0) + (parseInt(d(b).css("paddingTop"), 10) || 0), (c ? Math.max(b.scrollWidth, b.offsetWidth) : b.offsetWidth) - (parseInt(d(b).css("borderLeftWidth"), 10) || 0) - (parseInt(d(b).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, (c ? Math.max(b.scrollHeight, b.offsetHeight) : b.offsetHeight) - (parseInt(d(b).css("borderTopWidth"), 10) || 0) - (parseInt(d(b).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom];
          this.relative_container = a
        }
      } else if (a.containment.constructor == Array) this.containment = a.containment
    },
    _convertPositionTo: function(a, b) {
      if (!b) b = this.position;
      a = a == "absolute" ? 1 : -1;
      var c = this.cssPosition == "absolute" && !(this.scrollParent[0] != document && d.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent: this.scrollParent,
      f = /(html|body)/i.test(c[0].tagName);
      return {
        top: b.top + this.offset.relative.top * a + this.offset.parent.top * a - (d.browser.safari && d.browser.version < 526 && this.cssPosition == "fixed" ? 0 : (this.cssPosition == "fixed" ? -this.scrollParent.scrollTop() : f ? 0 : c.scrollTop()) * a),
        left: b.left + this.offset.relative.left * a + this.offset.parent.left * a - (d.browser.safari && d.browser.version < 526 && this.cssPosition == "fixed" ? 0 : (this.cssPosition == "fixed" ? -this.scrollParent.scrollLeft() : f ? 0 : c.scrollLeft()) * a)
      }
    },
    _generatePosition: function(a) {
      var b = this.options,
      c = this.cssPosition == "absolute" && !(this.scrollParent[0] != document && d.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent: this.scrollParent,
      f = /(html|body)/i.test(c[0].tagName),
      e = a.pageX,
      h = a.pageY;
      if (this.originalPosition) {
        var g;
        if (this.containment) {
          if (this.relative_container) {
            g = this.relative_container.offset();
            g = [this.containment[0] + g.left, this.containment[1] + g.top, this.containment[2] + g.left, this.containment[3] + g.top]
          } else g = this.containment;
          if (a.pageX - this.offset.click.left < g[0]) e = g[0] + this.offset.click.left;
          if (a.pageY - this.offset.click.top < g[1]) h = g[1] + this.offset.click.top;
          if (a.pageX - this.offset.click.left > g[2]) e = g[2] + this.offset.click.left;
          if (a.pageY - this.offset.click.top > g[3]) h = g[3] + this.offset.click.top
        }
        if (b.grid) {
          h = b.grid[1] ? this.originalPageY + Math.round((h - this.originalPageY) / b.grid[1]) * b.grid[1] : this.originalPageY;
          h = g ? !(h - this.offset.click.top < g[1] || h - this.offset.click.top > g[3]) ? h: !(h - this.offset.click.top < g[1]) ? h - b.grid[1] : h + b.grid[1] : h;
          e = b.grid[0] ? this.originalPageX + Math.round((e - this.originalPageX) / b.grid[0]) * b.grid[0] : this.originalPageX;
          e = g ? !(e - this.offset.click.left < g[0] || e - this.offset.click.left > g[2]) ? e: !(e - this.offset.click.left < g[0]) ? e - b.grid[0] : e + b.grid[0] : e
        }
      }
      return {
        top: h - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + (d.browser.safari && d.browser.version < 526 && this.cssPosition == "fixed" ? 0 : this.cssPosition == "fixed" ? -this.scrollParent.scrollTop() : f ? 0 : c.scrollTop()),
        left: e - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + (d.browser.safari && d.browser.version < 526 && this.cssPosition == "fixed" ? 0 : this.cssPosition == "fixed" ? -this.scrollParent.scrollLeft() : f ? 0 : c.scrollLeft())
      }
    },
    _clear: function() {
      this.helper.removeClass("ui-draggable-dragging");
      this.helper[0] != this.element[0] && !this.cancelHelperRemoval && this.helper.remove();
      this.helper = null;
      this.cancelHelperRemoval = false
    },
    _trigger: function(a, b, c) {
      c = c || this._uiHash();
      d.ui.plugin.call(this, a, [b, c]);
      if (a == "drag") this.positionAbs = this._convertPositionTo("absolute");
      return d.Widget.prototype._trigger.call(this, a, b, c)
    },
    plugins: {},
    _uiHash: function() {
      return {
        helper: this.helper,
        position: this.position,
        originalPosition: this.originalPosition,
        offset: this.positionAbs
      }
    }
  });
  d.extend(d.ui.draggable, {
    version: "1.8.16"
  });
  d.ui.plugin.add("draggable", "connectToSortable", {
    start: function(a, b) {
      var c = d(this).data("draggable"),
      f = c.options,
      e = d.extend({},
      b, {
        item: c.element
      });
      c.sortables = [];
      d(f.connectToSortable).each(function() {
        var h = d.data(this, "sortable");
        if (h && !h.options.disabled) {
          c.sortables.push({
            instance: h,
            shouldRevert: h.options.revert
          });
          h.refreshPositions();
          h._trigger("activate", a, e)
        }
      })
    },
    stop: function(a, b) {
      var c = d(this).data("draggable"),
      f = d.extend({},
      b, {
        item: c.element
      });
      d.each(c.sortables,
      function() {
        if (this.instance.isOver) {
          this.instance.isOver = 0;
          c.cancelHelperRemoval = true;
          this.instance.cancelHelperRemoval = false;
          if (this.shouldRevert) this.instance.options.revert = true;
          this.instance._mouseStop(a);
          this.instance.options.helper = this.instance.options._helper;
          c.options.helper == "original" && this.instance.currentItem.css({
            top: "auto",
            left: "auto"
          })
        } else {
          this.instance.cancelHelperRemoval = false;
          this.instance._trigger("deactivate", a, f)
        }
      })
    },
    drag: function(a, b) {
      var c = d(this).data("draggable"),
      f = this;
      d.each(c.sortables,
      function() {
        this.instance.positionAbs = c.positionAbs;
        this.instance.helperProportions = c.helperProportions;
        this.instance.offset.click = c.offset.click;
        if (this.instance._intersectsWith(this.instance.containerCache)) {
          if (!this.instance.isOver) {
            this.instance.isOver = 1;
            this.instance.currentItem = d(f).clone().removeAttr("id").appendTo(this.instance.element).data("sortable-item", true);
            this.instance.options._helper = this.instance.options.helper;
            this.instance.options.helper = function() {
              return b.helper[0]
            };
            a.target = this.instance.currentItem[0];
            this.instance._mouseCapture(a, true);
            this.instance._mouseStart(a, true, true);
            this.instance.offset.click.top = c.offset.click.top;
            this.instance.offset.click.left = c.offset.click.left;
            this.instance.offset.parent.left -= c.offset.parent.left - this.instance.offset.parent.left;
            this.instance.offset.parent.top -= c.offset.parent.top - this.instance.offset.parent.top;
            c._trigger("toSortable", a);
            c.dropped = this.instance.element;
            c.currentItem = c.element;
            this.instance.fromOutside = c
          }
          this.instance.currentItem && this.instance._mouseDrag(a)
        } else if (this.instance.isOver) {
          this.instance.isOver = 0;
          this.instance.cancelHelperRemoval = true;
          this.instance.options.revert = false;
          this.instance._trigger("out", a, this.instance._uiHash(this.instance));
          this.instance._mouseStop(a, true);
          this.instance.options.helper = this.instance.options._helper;
          this.instance.currentItem.remove();
          this.instance.placeholder && this.instance.placeholder.remove();
          c._trigger("fromSortable", a);
          c.dropped = false
        }
      })
    }
  });
  d.ui.plugin.add("draggable", "cursor", {
    start: function() {
      var a = d("body"),
      b = d(this).data("draggable").options;
      if (a.css("cursor")) b._cursor = a.css("cursor");
      a.css("cursor", b.cursor)
    },
    stop: function() {
      var a = d(this).data("draggable").options;
      a._cursor && d("body").css("cursor", a._cursor)
    }
  });
  d.ui.plugin.add("draggable", "opacity", {
    start: function(a, b) {
      a = d(b.helper);
      b = d(this).data("draggable").options;
      if (a.css("opacity")) b._opacity = a.css("opacity");
      a.css("opacity", b.opacity)
    },
    stop: function(a, b) {
      a = d(this).data("draggable").options;
      a._opacity && d(b.helper).css("opacity", a._opacity)
    }
  });
  d.ui.plugin.add("draggable", "scroll", {
    start: function() {
      var a = d(this).data("draggable");
      if (a.scrollParent[0] != document && a.scrollParent[0].tagName != "HTML") a.overflowOffset = a.scrollParent.offset()
    },
    drag: function(a) {
      var b = d(this).data("draggable"),
      c = b.options,
      f = false;
      if (b.scrollParent[0] != document && b.scrollParent[0].tagName != "HTML") {
        if (!c.axis || c.axis != "x") if (b.overflowOffset.top + b.scrollParent[0].offsetHeight - a.pageY < c.scrollSensitivity) b.scrollParent[0].scrollTop = f = b.scrollParent[0].scrollTop + c.scrollSpeed;
        else if (a.pageY - b.overflowOffset.top < c.scrollSensitivity) b.scrollParent[0].scrollTop = f = b.scrollParent[0].scrollTop - c.scrollSpeed;
        if (!c.axis || c.axis != "y") if (b.overflowOffset.left + b.scrollParent[0].offsetWidth - a.pageX < c.scrollSensitivity) b.scrollParent[0].scrollLeft = f = b.scrollParent[0].scrollLeft + c.scrollSpeed;
        else if (a.pageX - b.overflowOffset.left < c.scrollSensitivity) b.scrollParent[0].scrollLeft = f = b.scrollParent[0].scrollLeft - c.scrollSpeed
      } else {
        if (!c.axis || c.axis != "x") if (a.pageY - d(document).scrollTop() < c.scrollSensitivity) f = d(document).scrollTop(d(document).scrollTop() - c.scrollSpeed);
        else if (d(window).height() - (a.pageY - d(document).scrollTop()) < c.scrollSensitivity) f = d(document).scrollTop(d(document).scrollTop() + c.scrollSpeed);
        if (!c.axis || c.axis != "y") if (a.pageX - d(document).scrollLeft() < c.scrollSensitivity) f = d(document).scrollLeft(d(document).scrollLeft() - c.scrollSpeed);
        else if (d(window).width() - (a.pageX - d(document).scrollLeft()) < c.scrollSensitivity) f = d(document).scrollLeft(d(document).scrollLeft() + c.scrollSpeed)
      }
      f !== false && d.ui.ddmanager && !c.dropBehaviour && d.ui.ddmanager.prepareOffsets(b, a)
    }
  });
  d.ui.plugin.add("draggable", "snap", {
    start: function() {
      var a = d(this).data("draggable"),
      b = a.options;
      a.snapElements = [];
      d(b.snap.constructor != String ? b.snap.items || ":data(draggable)": b.snap).each(function() {
        var c = d(this),
        f = c.offset();
        this != a.element[0] && a.snapElements.push({
          item: this,
          width: c.outerWidth(),
          height: c.outerHeight(),
          top: f.top,
          left: f.left
        })
      })
    },
    drag: function(a, b) {
      for (var c = d(this).data("draggable"), f = c.options, e = f.snapTolerance, h = b.offset.left, g = h + c.helperProportions.width, n = b.offset.top, o = n + c.helperProportions.height, i = c.snapElements.length - 1; i >= 0; i--) {
        var j = c.snapElements[i].left,
        l = j + c.snapElements[i].width,
        k = c.snapElements[i].top,
        m = k + c.snapElements[i].height;
        if (j - e < h && h < l + e && k - e < n && n < m + e || j - e < h && h < l + e && k - e < o && o < m + e || j - e < g && g < l + e && k - e < n && n < m + e || j - e < g && g < l + e && k - e < o && o < m + e) {
          if (f.snapMode != "inner") {
            var p = Math.abs(k - o) <= e,
            q = Math.abs(m - n) <= e,
            r = Math.abs(j - g) <= e,
            s = Math.abs(l - h) <= e;
            if (p) b.position.top = c._convertPositionTo("relative", {
              top: k - c.helperProportions.height,
              left: 0
            }).top - c.margins.top;
            if (q) b.position.top = c._convertPositionTo("relative", {
              top: m,
              left: 0
            }).top - c.margins.top;
            if (r) b.position.left = c._convertPositionTo("relative", {
              top: 0,
              left: j - c.helperProportions.width
            }).left - c.margins.left;
            if (s) b.position.left = c._convertPositionTo("relative", {
              top: 0,
              left: l
            }).left - c.margins.left
          }
          var t = p || q || r || s;
          if (f.snapMode != "outer") {
            p = Math.abs(k - n) <= e;
            q = Math.abs(m - o) <= e;
            r = Math.abs(j - h) <= e;
            s = Math.abs(l - g) <= e;
            if (p) b.position.top = c._convertPositionTo("relative", {
              top: k,
              left: 0
            }).top - c.margins.top;
            if (q) b.position.top = c._convertPositionTo("relative", {
              top: m - c.helperProportions.height,
              left: 0
            }).top - c.margins.top;
            if (r) b.position.left = c._convertPositionTo("relative", {
              top: 0,
              left: j
            }).left - c.margins.left;
            if (s) b.position.left = c._convertPositionTo("relative", {
              top: 0,
              left: l - c.helperProportions.width
            }).left - c.margins.left
          }
          if (!c.snapElements[i].snapping && (p || q || r || s || t)) c.options.snap.snap && c.options.snap.snap.call(c.element, a, d.extend(c._uiHash(), {
            snapItem: c.snapElements[i].item
          }));
          c.snapElements[i].snapping = p || q || r || s || t
        } else {
          c.snapElements[i].snapping && c.options.snap.release && c.options.snap.release.call(c.element, a, d.extend(c._uiHash(), {
            snapItem: c.snapElements[i].item
          }));
          c.snapElements[i].snapping = false
        }
      }
    }
  });
  d.ui.plugin.add("draggable", "stack", {
    start: function() {
      var a = d(this).data("draggable").options;
      a = d.makeArray(d(a.stack)).sort(function(c, f) {
        return (parseInt(d(c).css("zIndex"), 10) || 0) - (parseInt(d(f).css("zIndex"), 10) || 0)
      });
      if (a.length) {
        var b = parseInt(a[0].style.zIndex) || 0;
        d(a).each(function(c) {
          this.style.zIndex = b + c
        });
        this[0].style.zIndex = b + a.length
      }
    }
  });
  d.ui.plugin.add("draggable", "zIndex", {
    start: function(a, b) {
      a = d(b.helper);
      b = d(this).data("draggable").options;
      if (a.css("zIndex")) b._zIndex = a.css("zIndex");
      a.css("zIndex", b.zIndex)
    },
    stop: function(a, b) {
      a = d(this).data("draggable").options;
      a._zIndex && d(b.helper).css("zIndex", a._zIndex)
    }
  })
})(jQuery);; (function(d) {
  d.widget("ui.droppable", {
    widgetEventPrefix: "drop",
    options: {
      accept: "*",
      activeClass: false,
      addClasses: true,
      greedy: false,
      hoverClass: false,
      scope: "default",
      tolerance: "intersect"
    },
    _create: function() {
      var a = this.options,
      b = a.accept;
      this.isover = 0;
      this.isout = 1;
      this.accept = d.isFunction(b) ? b: function(c) {
        return c.is(b)
      };
      this.proportions = {
        width: this.element[0].offsetWidth,
        height: this.element[0].offsetHeight
      };
      d.ui.ddmanager.droppables[a.scope] = d.ui.ddmanager.droppables[a.scope] || [];
      d.ui.ddmanager.droppables[a.scope].push(this);
      a.addClasses && this.element.addClass("ui-droppable")
    },
    destroy: function() {
      for (var a = d.ui.ddmanager.droppables[this.options.scope], b = 0; b < a.length; b++) a[b] == this && a.splice(b, 1);
      this.element.removeClass("ui-droppable ui-droppable-disabled").removeData("droppable").unbind(".droppable");
      return this
    },
    _setOption: function(a, b) {
      if (a == "accept") this.accept = d.isFunction(b) ? b: function(c) {
        return c.is(b)
      };
      d.Widget.prototype._setOption.apply(this, arguments)
    },
    _activate: function(a) {
      var b = d.ui.ddmanager.current;
      this.options.activeClass && this.element.addClass(this.options.activeClass);
      b && this._trigger("activate", a, this.ui(b))
    },
    _deactivate: function(a) {
      var b = d.ui.ddmanager.current;
      this.options.activeClass && this.element.removeClass(this.options.activeClass);
      b && this._trigger("deactivate", a, this.ui(b))
    },
    _over: function(a) {
      var b = d.ui.ddmanager.current;
      if (! (!b || (b.currentItem || b.element)[0] == this.element[0])) if (this.accept.call(this.element[0], b.currentItem || b.element)) {
        this.options.hoverClass && this.element.addClass(this.options.hoverClass);
        this._trigger("over", a, this.ui(b))
      }
    },
    _out: function(a) {
      var b = d.ui.ddmanager.current;
      if (! (!b || (b.currentItem || b.element)[0] == this.element[0])) if (this.accept.call(this.element[0], b.currentItem || b.element)) {
        this.options.hoverClass && this.element.removeClass(this.options.hoverClass);
        this._trigger("out", a, this.ui(b))
      }
    },
    _drop: function(a, b) {
      var c = b || d.ui.ddmanager.current;
      if (!c || (c.currentItem || c.element)[0] == this.element[0]) return false;
      var e = false;
      this.element.find(":data(droppable)").not(".ui-draggable-dragging").each(function() {
        var g = d.data(this, "droppable");
        if (g.options.greedy && !g.options.disabled && g.options.scope == c.options.scope && g.accept.call(g.element[0], c.currentItem || c.element) && d.ui.intersect(c, d.extend(g, {
          offset: g.element.offset()
        }), g.options.tolerance)) {
          e = true;
          return false
        }
      });
      if (e) return false;
      if (this.accept.call(this.element[0], c.currentItem || c.element)) {
        this.options.activeClass && this.element.removeClass(this.options.activeClass);
        this.options.hoverClass && this.element.removeClass(this.options.hoverClass);
        this._trigger("drop", a, this.ui(c));
        return this.element
      }
      return false
    },
    ui: function(a) {
      return {
        draggable: a.currentItem || a.element,
        helper: a.helper,
        position: a.position,
        offset: a.positionAbs
      }
    }
  });
  d.extend(d.ui.droppable, {
    version: "1.8.16"
  });
  d.ui.intersect = function(a, b, c) {
    if (!b.offset) return false;
    var e = (a.positionAbs || a.position.absolute).left,
    g = e + a.helperProportions.width,
    f = (a.positionAbs || a.position.absolute).top,
    h = f + a.helperProportions.height,
    i = b.offset.left,
    k = i + b.proportions.width,
    j = b.offset.top,
    l = j + b.proportions.height;
    switch (c) {
    case "fit":
      return i <= e && g <= k && j <= f && h <= l;
    case "intersect":
      return i < e + a.helperProportions.width / 2 && g - a.helperProportions.width / 2 < k && j < f + a.helperProportions.height / 2 && h - a.helperProportions.height / 2 < l;
    case "pointer":
      return d.ui.isOver((a.positionAbs || a.position.absolute).top + (a.clickOffset || a.offset.click).top, (a.positionAbs || a.position.absolute).left + (a.clickOffset || a.offset.click).left, j, i, b.proportions.height, b.proportions.width);
    case "touch":
      return (f >= j && f <= l || h >= j && h <= l || f < j && h > l) && (e >= i && e <= k || g >= i && g <= k || e < i && g > k);
    default:
      return false
    }
  };
  d.ui.ddmanager = {
    current: null,
    droppables: {
      "default": []
    },
    prepareOffsets: function(a, b) {
      var c = d.ui.ddmanager.droppables[a.options.scope] || [],
      e = b ? b.type: null,
      g = (a.currentItem || a.element).find(":data(droppable)").andSelf(),
      f = 0;
      a: for (; f < c.length; f++) if (! (c[f].options.disabled || a && !c[f].accept.call(c[f].element[0], a.currentItem || a.element))) {
        for (var h = 0; h < g.length; h++) if (g[h] == c[f].element[0]) {
          c[f].proportions.height = 0;
          continue a
        }
        c[f].visible = c[f].element.css("display") != "none";
        if (c[f].visible) {
          e == "mousedown" && c[f]._activate.call(c[f], b);
          c[f].offset = c[f].element.offset();
          c[f].proportions = {
            width: c[f].element[0].offsetWidth,
            height: c[f].element[0].offsetHeight
          }
        }
      }
    },
    drop: function(a, b) {
      var c = false;
      d.each(d.ui.ddmanager.droppables[a.options.scope] || [],
      function() {
        if (this.options) {
          if (!this.options.disabled && this.visible && d.ui.intersect(a, this, this.options.tolerance)) c = c || this._drop.call(this, b);
          if (!this.options.disabled && this.visible && this.accept.call(this.element[0], a.currentItem || a.element)) {
            this.isout = 1;
            this.isover = 0;
            this._deactivate.call(this, b)
          }
        }
      });
      return c
    },
    dragStart: function(a, b) {
      a.element.parents(":not(body,html)").bind("scroll.droppable",
      function() {
        a.options.refreshPositions || d.ui.ddmanager.prepareOffsets(a, b)
      })
    },
    drag: function(a, b) {
      a.options.refreshPositions && d.ui.ddmanager.prepareOffsets(a, b);
      d.each(d.ui.ddmanager.droppables[a.options.scope] || [],
      function() {
        if (! (this.options.disabled || this.greedyChild || !this.visible)) {
          var c = d.ui.intersect(a, this, this.options.tolerance);
          if (c = !c && this.isover == 1 ? "isout": c && this.isover == 0 ? "isover": null) {
            var e;
            if (this.options.greedy) {
              var g = this.element.parents(":data(droppable):eq(0)");
              if (g.length) {
                e = d.data(g[0], "droppable");
                e.greedyChild = c == "isover" ? 1 : 0
              }
            }
            if (e && c == "isover") {
              e.isover = 0;
              e.isout = 1;
              e._out.call(e, b)
            }
            this[c] = 1;
            this[c == "isout" ? "isover": "isout"] = 0;
            this[c == "isover" ? "_over": "_out"].call(this, b);
            if (e && c == "isout") {
              e.isout = 0;
              e.isover = 1;
              e._over.call(e, b)
            }
          }
        }
      })
    },
    dragStop: function(a, b) {
      a.element.parents(":not(body,html)").unbind("scroll.droppable");
      a.options.refreshPositions || d.ui.ddmanager.prepareOffsets(a, b)
    }
  }
})(jQuery);; (function(e) {
  e.widget("ui.resizable", e.ui.mouse, {
    widgetEventPrefix: "resize",
    options: {
      alsoResize: false,
      animate: false,
      animateDuration: "slow",
      animateEasing: "swing",
      aspectRatio: false,
      autoHide: false,
      containment: false,
      ghost: false,
      grid: false,
      handles: "e,s,se",
      helper: false,
      maxHeight: null,
      maxWidth: null,
      minHeight: 10,
      minWidth: 10,
      zIndex: 1E3
    },
    _create: function() {
      var b = this,
      a = this.options;
      this.element.addClass("ui-resizable");
      e.extend(this, {
        _aspectRatio: !!a.aspectRatio,
        aspectRatio: a.aspectRatio,
        originalElement: this.element,
        _proportionallyResizeElements: [],
        _helper: a.helper || a.ghost || a.animate ? a.helper || "ui-resizable-helper": null
      });
      if (this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)) { / relative / .test(this.element.css("position")) && e.browser.opera && this.element.css({
          position: "relative",
          top: "auto",
          left: "auto"
        });
        this.element.wrap(e('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({
          position: this.element.css("position"),
          width: this.element.outerWidth(),
          height: this.element.outerHeight(),
          top: this.element.css("top"),
          left: this.element.css("left")
        }));
        this.element = this.element.parent().data("resizable", this.element.data("resizable"));
        this.elementIsWrapper = true;
        this.element.css({
          marginLeft: this.originalElement.css("marginLeft"),
          marginTop: this.originalElement.css("marginTop"),
          marginRight: this.originalElement.css("marginRight"),
          marginBottom: this.originalElement.css("marginBottom")
        });
        this.originalElement.css({
          marginLeft: 0,
          marginTop: 0,
          marginRight: 0,
          marginBottom: 0
        });
        this.originalResizeStyle = this.originalElement.css("resize");
        this.originalElement.css("resize", "none");
        this._proportionallyResizeElements.push(this.originalElement.css({
          position: "static",
          zoom: 1,
          display: "block"
        }));
        this.originalElement.css({
          margin: this.originalElement.css("margin")
        });
        this._proportionallyResize()
      }
      this.handles = a.handles || (!e(".ui-resizable-handle", this.element).length ? "e,s,se": {
        n: ".ui-resizable-n",
        e: ".ui-resizable-e",
        s: ".ui-resizable-s",
        w: ".ui-resizable-w",
        se: ".ui-resizable-se",
        sw: ".ui-resizable-sw",
        ne: ".ui-resizable-ne",
        nw: ".ui-resizable-nw"
      });
      if (this.handles.constructor == String) {
        if (this.handles == "all") this.handles = "n,e,s,w,se,sw,ne,nw";
        var c = this.handles.split(",");
        this.handles = {};
        for (var d = 0; d < c.length; d++) {
          var f = e.trim(c[d]),
          g = e('<div class="ui-resizable-handle ' + ("ui-resizable-" + f) + '"></div>');
          /sw|se|ne|nw/.test(f) && g.css({
            zIndex: ++a.zIndex
          });
          "se" == f && g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");
          this.handles[f] = ".ui-resizable-" + f;
          this.element.append(g)
        }
      }
      this._renderAxis = function(h) {
        h = h || this.element;
        for (var i in this.handles) {
          if (this.handles[i].constructor == String) this.handles[i] = e(this.handles[i], this.element).show();
          if (this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i)) {
            var j = e(this.handles[i], this.element),
            l = 0;
            l = /sw|ne|nw|se|n|s/.test(i) ? j.outerHeight() : j.outerWidth();
            j = ["padding", /ne|nw|n/.test(i) ? "Top": /se|sw|s/.test(i) ? "Bottom": /^e$/.test(i) ? "Right": "Left"].join("");
            h.css(j, l);
            this._proportionallyResize()
          }
          e(this.handles[i])
        }
      };
      this._renderAxis(this.element);
      this._handles = e(".ui-resizable-handle", this.element).disableSelection();
      this._handles.mouseover(function() {
        if (!b.resizing) {
          if (this.className) var h = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);
          b.axis = h && h[1] ? h[1] : "se"
        }
      });
      if (a.autoHide) {
        this._handles.hide();
        e(this.element).addClass("ui-resizable-autohide").hover(function() {
          if (!a.disabled) {
            e(this).removeClass("ui-resizable-autohide");
            b._handles.show()
          }
        },
        function() {
          if (!a.disabled) if (!b.resizing) {
            e(this).addClass("ui-resizable-autohide");
            b._handles.hide()
          }
        })
      }
      this._mouseInit()
    },
    destroy: function() {
      this._mouseDestroy();
      var b = function(c) {
        e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()
      };
      if (this.elementIsWrapper) {
        b(this.element);
        var a = this.element;
        a.after(this.originalElement.css({
          position: a.css("position"),
          width: a.outerWidth(),
          height: a.outerHeight(),
          top: a.css("top"),
          left: a.css("left")
        })).remove()
      }
      this.originalElement.css("resize", this.originalResizeStyle);
      b(this.originalElement);
      return this
    },
    _mouseCapture: function(b) {
      var a = false;
      for (var c in this.handles) if (e(this.handles[c])[0] == b.target) a = true;
      return ! this.options.disabled && a
    },
    _mouseStart: function(b) {
      var a = this.options,
      c = this.element.position(),
      d = this.element;
      this.resizing = true;
      this.documentScroll = {
        top: e(document).scrollTop(),
        left: e(document).scrollLeft()
      };
      if (d.is(".ui-draggable") || /absolute/.test(d.css("position"))) d.css({
        position: "absolute",
        top: c.top,
        left: c.left
      });
      e.browser.opera && /relative/.test(d.css("position")) && d.css({
        position: "relative",
        top: "auto",
        left: "auto"
      });
      this._renderProxy();
      c = m(this.helper.css("left"));
      var f = m(this.helper.css("top"));
      if (a.containment) {
        c += e(a.containment).scrollLeft() || 0;
        f += e(a.containment).scrollTop() || 0
      }
      this.offset = this.helper.offset();
      this.position = {
        left: c,
        top: f
      };
      this.size = this._helper ? {
        width: d.outerWidth(),
        height: d.outerHeight()
      }: {
        width: d.width(),
        height: d.height()
      };
      this.originalSize = this._helper ? {
        width: d.outerWidth(),
        height: d.outerHeight()
      }: {
        width: d.width(),
        height: d.height()
      };
      this.originalPosition = {
        left: c,
        top: f
      };
      this.sizeDiff = {
        width: d.outerWidth() - d.width(),
        height: d.outerHeight() - d.height()
      };
      this.originalMousePosition = {
        left: b.pageX,
        top: b.pageY
      };
      this.aspectRatio = typeof a.aspectRatio == "number" ? a.aspectRatio: this.originalSize.width / this.originalSize.height || 1;
      a = e(".ui-resizable-" + this.axis).css("cursor");
      e("body").css("cursor", a == "auto" ? this.axis + "-resize": a);
      d.addClass("ui-resizable-resizing");
      this._propagate("start", b);
      return true
    },
    _mouseDrag: function(b) {
      var a = this.helper,
      c = this.originalMousePosition,
      d = this._change[this.axis];
      if (!d) return false;
      c = d.apply(this, [b, b.pageX - c.left || 0, b.pageY - c.top || 0]);
      this._updateVirtualBoundaries(b.shiftKey);
      if (this._aspectRatio || b.shiftKey) c = this._updateRatio(c, b);
      c = this._respectSize(c, b);
      this._propagate("resize", b);
      a.css({
        top: this.position.top + "px",
        left: this.position.left + "px",
        width: this.size.width + "px",
        height: this.size.height + "px"
      }); ! this._helper && this._proportionallyResizeElements.length && this._proportionallyResize();
      this._updateCache(c);
      this._trigger("resize", b, this.ui());
      return false
    },
    _mouseStop: function(b) {
      this.resizing = false;
      var a = this.options,
      c = this;
      if (this._helper) {
        var d = this._proportionallyResizeElements,
        f = d.length && /textarea/i.test(d[0].nodeName);
        d = f && e.ui.hasScroll(d[0], "left") ? 0 : c.sizeDiff.height;
        f = f ? 0 : c.sizeDiff.width;
        f = {
          width: c.helper.width() - f,
          height: c.helper.height() - d
        };
        d = parseInt(c.element.css("left"), 10) + (c.position.left - c.originalPosition.left) || null;
        var g = parseInt(c.element.css("top"), 10) + (c.position.top - c.originalPosition.top) || null;
        a.animate || this.element.css(e.extend(f, {
          top: g,
          left: d
        }));
        c.helper.height(c.size.height);
        c.helper.width(c.size.width);
        this._helper && !a.animate && this._proportionallyResize()
      }
      e("body").css("cursor", "auto");
      this.element.removeClass("ui-resizable-resizing");
      this._propagate("stop", b);
      this._helper && this.helper.remove();
      return false
    },
    _updateVirtualBoundaries: function(b) {
      var a = this.options,
      c, d, f;
      a = {
        minWidth: k(a.minWidth) ? a.minWidth: 0,
        maxWidth: k(a.maxWidth) ? a.maxWidth: Infinity,
        minHeight: k(a.minHeight) ? a.minHeight: 0,
        maxHeight: k(a.maxHeight) ? a.maxHeight: Infinity
      };
      if (this._aspectRatio || b) {
        b = a.minHeight * this.aspectRatio;
        d = a.minWidth / this.aspectRatio;
        c = a.maxHeight * this.aspectRatio;
        f = a.maxWidth / this.aspectRatio;
        if (b > a.minWidth) a.minWidth = b;
        if (d > a.minHeight) a.minHeight = d;
        if (c < a.maxWidth) a.maxWidth = c;
        if (f < a.maxHeight) a.maxHeight = f
      }
      this._vBoundaries = a
    },
    _updateCache: function(b) {
      this.offset = this.helper.offset();
      if (k(b.left)) this.position.left = b.left;
      if (k(b.top)) this.position.top = b.top;
      if (k(b.height)) this.size.height = b.height;
      if (k(b.width)) this.size.width = b.width
    },
    _updateRatio: function(b) {
      var a = this.position,
      c = this.size,
      d = this.axis;
      if (k(b.height)) b.width = b.height * this.aspectRatio;
      else if (k(b.width)) b.height = b.width / this.aspectRatio;
      if (d == "sw") {
        b.left = a.left + (c.width - b.width);
        b.top = null
      }
      if (d == "nw") {
        b.top = a.top + (c.height - b.height);
        b.left = a.left + (c.width - b.width)
      }
      return b
    },
    _respectSize: function(b) {
      var a = this._vBoundaries,
      c = this.axis,
      d = k(b.width) && a.maxWidth && a.maxWidth < b.width,
      f = k(b.height) && a.maxHeight && a.maxHeight < b.height,
      g = k(b.width) && a.minWidth && a.minWidth > b.width,
      h = k(b.height) && a.minHeight && a.minHeight > b.height;
      if (g) b.width = a.minWidth;
      if (h) b.height = a.minHeight;
      if (d) b.width = a.maxWidth;
      if (f) b.height = a.maxHeight;
      var i = this.originalPosition.left + this.originalSize.width,
      j = this.position.top + this.size.height,
      l = /sw|nw|w/.test(c);
      c = /nw|ne|n/.test(c);
      if (g && l) b.left = i - a.minWidth;
      if (d && l) b.left = i - a.maxWidth;
      if (h && c) b.top = j - a.minHeight;
      if (f && c) b.top = j - a.maxHeight;
      if ((a = !b.width && !b.height) && !b.left && b.top) b.top = null;
      else if (a && !b.top && b.left) b.left = null;
      return b
    },
    _proportionallyResize: function() {
      if (this._proportionallyResizeElements.length) for (var b = this.helper || this.element,
      a = 0; a < this._proportionallyResizeElements.length; a++) {
        var c = this._proportionallyResizeElements[a];
        if (!this.borderDif) {
          var d = [c.css("borderTopWidth"), c.css("borderRightWidth"), c.css("borderBottomWidth"), c.css("borderLeftWidth")],
          f = [c.css("paddingTop"), c.css("paddingRight"), c.css("paddingBottom"), c.css("paddingLeft")];
          this.borderDif = e.map(d,
          function(g, h) {
            g = parseInt(g, 10) || 0;
            h = parseInt(f[h], 10) || 0;
            return g + h
          })
        }
        e.browser.msie && (e(b).is(":hidden") || e(b).parents(":hidden").length) || c.css({
          height: b.height() - this.borderDif[0] - this.borderDif[2] || 0,
          width: b.width() - this.borderDif[1] - this.borderDif[3] || 0
        })
      }
    },
    _renderProxy: function() {
      var b = this.options;
      this.elementOffset = this.element.offset();
      if (this._helper) {
        this.helper = this.helper || e('<div style="overflow:hidden;"></div>');
        var a = e.browser.msie && e.browser.version < 7,
        c = a ? 1 : 0;
        a = a ? 2 : -1;
        this.helper.addClass(this._helper).css({
          width: this.element.outerWidth() + a,
          height: this.element.outerHeight() + a,
          position: "absolute",
          left: this.elementOffset.left - c + "px",
          top: this.elementOffset.top - c + "px",
          zIndex: ++b.zIndex
        });
        this.helper.appendTo("body").disableSelection()
      } else this.helper = this.element
    },
    _change: {
      e: function(b, a) {
        return {
          width: this.originalSize.width + a
        }
      },
      w: function(b, a) {
        return {
          left: this.originalPosition.left + a,
          width: this.originalSize.width - a
        }
      },
      n: function(b, a, c) {
        return {
          top: this.originalPosition.top + c,
          height: this.originalSize.height - c
        }
      },
      s: function(b, a, c) {
        return {
          height: this.originalSize.height + c
        }
      },
      se: function(b, a, c) {
        return e.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [b, a, c]))
      },
      sw: function(b, a, c) {
        return e.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [b, a, c]))
      },
      ne: function(b, a, c) {
        return e.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [b, a, c]))
      },
      nw: function(b, a, c) {
        return e.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [b, a, c]))
      }
    },
    _propagate: function(b, a) {
      e.ui.plugin.call(this, b, [a, this.ui()]);
      b != "resize" && this._trigger(b, a, this.ui())
    },
    plugins: {},
    ui: function() {
      return {
        originalElement: this.originalElement,
        element: this.element,
        helper: this.helper,
        position: this.position,
        size: this.size,
        originalSize: this.originalSize,
        originalPosition: this.originalPosition
      }
    }
  });
  e.extend(e.ui.resizable, {
    version: "1.8.16"
  });
  e.ui.plugin.add("resizable", "alsoResize", {
    start: function() {
      var b = e(this).data("resizable").options,
      a = function(c) {
        e(c).each(function() {
          var d = e(this);
          d.data("resizable-alsoresize", {
            width: parseInt(d.width(), 10),
            height: parseInt(d.height(), 10),
            left: parseInt(d.css("left"), 10),
            top: parseInt(d.css("top"), 10),
            position: d.css("position")
          })
        })
      };
      if (typeof b.alsoResize == "object" && !b.alsoResize.parentNode) if (b.alsoResize.length) {
        b.alsoResize = b.alsoResize[0];
        a(b.alsoResize)
      } else e.each(b.alsoResize,
      function(c) {
        a(c)
      });
      else a(b.alsoResize)
    },
    resize: function(b, a) {
      var c = e(this).data("resizable");
      b = c.options;
      var d = c.originalSize,
      f = c.originalPosition,
      g = {
        height: c.size.height - d.height || 0,
        width: c.size.width - d.width || 0,
        top: c.position.top - f.top || 0,
        left: c.position.left - f.left || 0
      },
      h = function(i, j) {
        e(i).each(function() {
          var l = e(this),
          q = e(this).data("resizable-alsoresize"),
          p = {},
          r = j && j.length ? j: l.parents(a.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"];
          e.each(r,
          function(n, o) {
            if ((n = (q[o] || 0) + (g[o] || 0)) && n >= 0) p[o] = n || null
          });
          if (e.browser.opera && /relative/.test(l.css("position"))) {
            c._revertToRelativePosition = true;
            l.css({
              position: "absolute",
              top: "auto",
              left: "auto"
            })
          }
          l.css(p)
        })
      };
      typeof b.alsoResize == "object" && !b.alsoResize.nodeType ? e.each(b.alsoResize,
      function(i, j) {
        h(i, j)
      }) : h(b.alsoResize)
    },
    stop: function() {
      var b = e(this).data("resizable"),
      a = b.options,
      c = function(d) {
        e(d).each(function() {
          var f = e(this);
          f.css({
            position: f.data("resizable-alsoresize").position
          })
        })
      };
      if (b._revertToRelativePosition) {
        b._revertToRelativePosition = false;
        typeof a.alsoResize == "object" && !a.alsoResize.nodeType ? e.each(a.alsoResize,
        function(d) {
          c(d)
        }) : c(a.alsoResize)
      }
      e(this).removeData("resizable-alsoresize")
    }
  });
  e.ui.plugin.add("resizable", "animate", {
    stop: function(b) {
      var a = e(this).data("resizable"),
      c = a.options,
      d = a._proportionallyResizeElements,
      f = d.length && /textarea/i.test(d[0].nodeName),
      g = f && e.ui.hasScroll(d[0], "left") ? 0 : a.sizeDiff.height;
      f = {
        width: a.size.width - (f ? 0 : a.sizeDiff.width),
        height: a.size.height - g
      };
      g = parseInt(a.element.css("left"), 10) + (a.position.left - a.originalPosition.left) || null;
      var h = parseInt(a.element.css("top"), 10) + (a.position.top - a.originalPosition.top) || null;
      a.element.animate(e.extend(f, h && g ? {
        top: h,
        left: g
      }: {}), {
        duration: c.animateDuration,
        easing: c.animateEasing,
        step: function() {
          var i = {
            width: parseInt(a.element.css("width"), 10),
            height: parseInt(a.element.css("height"), 10),
            top: parseInt(a.element.css("top"), 10),
            left: parseInt(a.element.css("left"), 10)
          };
          d && d.length && e(d[0]).css({
            width: i.width,
            height: i.height
          });
          a._updateCache(i);
          a._propagate("resize", b)
        }
      })
    }
  });
  e.ui.plugin.add("resizable", "containment", {
    start: function() {
      var b = e(this).data("resizable"),
      a = b.element,
      c = b.options.containment;
      if (a = c instanceof e ? c.get(0) : /parent/.test(c) ? a.parent().get(0) : c) {
        b.containerElement = e(a);
        if (/document/.test(c) || c == document) {
          b.containerOffset = {
            left: 0,
            top: 0
          };
          b.containerPosition = {
            left: 0,
            top: 0
          };
          b.parentData = {
            element: e(document),
            left: 0,
            top: 0,
            width: e(document).width(),
            height: e(document).height() || document.body.parentNode.scrollHeight
          }
        } else {
          var d = e(a),
          f = [];
          e(["Top", "Right", "Left", "Bottom"]).each(function(i, j) {
            f[i] = m(d.css("padding" + j))
          });
          b.containerOffset = d.offset();
          b.containerPosition = d.position();
          b.containerSize = {
            height: d.innerHeight() - f[3],
            width: d.innerWidth() - f[1]
          };
          c = b.containerOffset;
          var g = b.containerSize.height,
          h = b.containerSize.width;
          h = e.ui.hasScroll(a, "left") ? a.scrollWidth: h;
          g = e.ui.hasScroll(a) ? a.scrollHeight: g;
          b.parentData = {
            element: a,
            left: c.left,
            top: c.top,
            width: h,
            height: g
          }
        }
      }
    },
    resize: function(b) {
      var a = e(this).data("resizable"),
      c = a.options,
      d = a.containerOffset,
      f = a.position;
      b = a._aspectRatio || b.shiftKey;
      var g = {
        top: 0,
        left: 0
      },
      h = a.containerElement;
      if (h[0] != document && /static/.test(h.css("position"))) g = d;
      if (f.left < (a._helper ? d.left: 0)) {
        a.size.width += a._helper ? a.position.left - d.left: a.position.left - g.left;
        if (b) a.size.height = a.size.width / c.aspectRatio;
        a.position.left = c.helper ? d.left: 0
      }
      if (f.top < (a._helper ? d.top: 0)) {
        a.size.height += a._helper ? a.position.top - d.top: a.position.top;
        if (b) a.size.width = a.size.height * c.aspectRatio;
        a.position.top = a._helper ? d.top: 0
      }
      a.offset.left = a.parentData.left + a.position.left;
      a.offset.top = a.parentData.top + a.position.top;
      c = Math.abs((a._helper ? a.offset.left - g.left: a.offset.left - g.left) + a.sizeDiff.width);
      d = Math.abs((a._helper ? a.offset.top - g.top: a.offset.top - d.top) + a.sizeDiff.height);
      f = a.containerElement.get(0) == a.element.parent().get(0);
      g = /relative|absolute/.test(a.containerElement.css("position"));
      if (f && g) c -= a.parentData.left;
      if (c + a.size.width >= a.parentData.width) {
        a.size.width = a.parentData.width - c;
        if (b) a.size.height = a.size.width / a.aspectRatio
      }
      if (d + a.size.height >= a.parentData.height) {
        a.size.height = a.parentData.height - d;
        if (b) a.size.width = a.size.height * a.aspectRatio
      }
    },
    stop: function() {
      var b = e(this).data("resizable"),
      a = b.options,
      c = b.containerOffset,
      d = b.containerPosition,
      f = b.containerElement,
      g = e(b.helper),
      h = g.offset(),
      i = g.outerWidth() - b.sizeDiff.width;
      g = g.outerHeight() - b.sizeDiff.height;
      b._helper && !a.animate && /relative/.test(f.css("position")) && e(this).css({
        left: h.left - d.left - c.left,
        width: i,
        height: g
      });
      b._helper && !a.animate && /static/.test(f.css("position")) && e(this).css({
        left: h.left - d.left - c.left,
        width: i,
        height: g
      })
    }
  });
  e.ui.plugin.add("resizable", "ghost", {
    start: function() {
      var b = e(this).data("resizable"),
      a = b.options,
      c = b.size;
      b.ghost = b.originalElement.clone();
      b.ghost.css({
        opacity: 0.25,
        display: "block",
        position: "relative",
        height: c.height,
        width: c.width,
        margin: 0,
        left: 0,
        top: 0
      }).addClass("ui-resizable-ghost").addClass(typeof a.ghost == "string" ? a.ghost: "");
      b.ghost.appendTo(b.helper)
    },
    resize: function() {
      var b = e(this).data("resizable");
      b.ghost && b.ghost.css({
        position: "relative",
        height: b.size.height,
        width: b.size.width
      })
    },
    stop: function() {
      var b = e(this).data("resizable");
      b.ghost && b.helper && b.helper.get(0).removeChild(b.ghost.get(0))
    }
  });
  e.ui.plugin.add("resizable", "grid", {
    resize: function() {
      var b = e(this).data("resizable"),
      a = b.options,
      c = b.size,
      d = b.originalSize,
      f = b.originalPosition,
      g = b.axis;
      a.grid = typeof a.grid == "number" ? [a.grid, a.grid] : a.grid;
      var h = Math.round((c.width - d.width) / (a.grid[0] || 1)) * (a.grid[0] || 1);
      a = Math.round((c.height - d.height) / (a.grid[1] || 1)) * (a.grid[1] || 1);
      if (/^(se|s|e)$/.test(g)) {
        b.size.width = d.width + h;
        b.size.height = d.height + a
      } else if (/^(ne)$/.test(g)) {
        b.size.width = d.width + h;
        b.size.height = d.height + a;
        b.position.top = f.top - a
      } else {
        if (/^(sw)$/.test(g)) {
          b.size.width = d.width + h;
          b.size.height = d.height + a
        } else {
          b.size.width = d.width + h;
          b.size.height = d.height + a;
          b.position.top = f.top - a
        }
        b.position.left = f.left - h
      }
    }
  });
  var m = function(b) {
    return parseInt(b, 10) || 0
  },
  k = function(b) {
    return ! isNaN(parseInt(b, 10))
  }
})(jQuery);; (function(e) {
  e.widget("ui.selectable", e.ui.mouse, {
    options: {
      appendTo: "body",
      autoRefresh: true,
      distance: 0,
      filter: "*",
      tolerance: "touch"
    },
    _create: function() {
      var c = this;
      this.element.addClass("ui-selectable");
      this.dragged = false;
      var f;
      this.refresh = function() {
        f = e(c.options.filter, c.element[0]);
        f.each(function() {
          var d = e(this),
          b = d.offset();
          e.data(this, "selectable-item", {
            element: this,
            $element: d,
            left: b.left,
            top: b.top,
            right: b.left + d.outerWidth(),
            bottom: b.top + d.outerHeight(),
            startselected: false,
            selected: d.hasClass("ui-selected"),
            selecting: d.hasClass("ui-selecting"),
            unselecting: d.hasClass("ui-unselecting")
          })
        })
      };
      this.refresh();
      this.selectees = f.addClass("ui-selectee");
      this._mouseInit();
      this.helper = e("<div class='ui-selectable-helper'></div>")
    },
    destroy: function() {
      this.selectees.removeClass("ui-selectee").removeData("selectable-item");
      this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");
      this._mouseDestroy();
      return this
    },
    _mouseStart: function(c) {
      var f = this;
      this.opos = [c.pageX, c.pageY];
      if (!this.options.disabled) {
        var d = this.options;
        this.selectees = e(d.filter, this.element[0]);
        this._trigger("start", c);
        e(d.appendTo).append(this.helper);
        this.helper.css({
          left: c.clientX,
          top: c.clientY,
          width: 0,
          height: 0
        });
        d.autoRefresh && this.refresh();
        this.selectees.filter(".ui-selected").each(function() {
          var b = e.data(this, "selectable-item");
          b.startselected = true;
          if (!c.metaKey) {
            b.$element.removeClass("ui-selected");
            b.selected = false;
            b.$element.addClass("ui-unselecting");
            b.unselecting = true;
            f._trigger("unselecting", c, {
              unselecting: b.element
            })
          }
        });
        e(c.target).parents().andSelf().each(function() {
          var b = e.data(this, "selectable-item");
          if (b) {
            var g = !c.metaKey || !b.$element.hasClass("ui-selected");
            b.$element.removeClass(g ? "ui-unselecting": "ui-selected").addClass(g ? "ui-selecting": "ui-unselecting");
            b.unselecting = !g;
            b.selecting = g; (b.selected = g) ? f._trigger("selecting", c, {
              selecting: b.element
            }) : f._trigger("unselecting", c, {
              unselecting: b.element
            });
            return false
          }
        })
      }
    },
    _mouseDrag: function(c) {
      var f = this;
      this.dragged = true;
      if (!this.options.disabled) {
        var d = this.options,
        b = this.opos[0],
        g = this.opos[1],
        h = c.pageX,
        i = c.pageY;
        if (b > h) {
          var j = h;
          h = b;
          b = j
        }
        if (g > i) {
          j = i;
          i = g;
          g = j
        }
        this.helper.css({
          left: b,
          top: g,
          width: h - b,
          height: i - g
        });
        this.selectees.each(function() {
          var a = e.data(this, "selectable-item");
          if (! (!a || a.element == f.element[0])) {
            var k = false;
            if (d.tolerance == "touch") k = !(a.left > h || a.right < b || a.top > i || a.bottom < g);
            else if (d.tolerance == "fit") k = a.left > b && a.right < h && a.top > g && a.bottom < i;
            if (k) {
              if (a.selected) {
                a.$element.removeClass("ui-selected");
                a.selected = false
              }
              if (a.unselecting) {
                a.$element.removeClass("ui-unselecting");
                a.unselecting = false
              }
              if (!a.selecting) {
                a.$element.addClass("ui-selecting");
                a.selecting = true;
                f._trigger("selecting", c, {
                  selecting: a.element
                })
              }
            } else {
              if (a.selecting) if (c.metaKey && a.startselected) {
                a.$element.removeClass("ui-selecting");
                a.selecting = false;
                a.$element.addClass("ui-selected");
                a.selected = true
              } else {
                a.$element.removeClass("ui-selecting");
                a.selecting = false;
                if (a.startselected) {
                  a.$element.addClass("ui-unselecting");
                  a.unselecting = true
                }
                f._trigger("unselecting", c, {
                  unselecting: a.element
                })
              }
              if (a.selected) if (!c.metaKey && !a.startselected) {
                a.$element.removeClass("ui-selected");
                a.selected = false;
                a.$element.addClass("ui-unselecting");
                a.unselecting = true;
                f._trigger("unselecting", c, {
                  unselecting: a.element
                })
              }
            }
          }
        });
        return false
      }
    },
    _mouseStop: function(c) {
      var f = this;
      this.dragged = false;
      e(".ui-unselecting", this.element[0]).each(function() {
        var d = e.data(this, "selectable-item");
        d.$element.removeClass("ui-unselecting");
        d.unselecting = false;
        d.startselected = false;
        f._trigger("unselected", c, {
          unselected: d.element
        })
      });
      e(".ui-selecting", this.element[0]).each(function() {
        var d = e.data(this, "selectable-item");
        d.$element.removeClass("ui-selecting").addClass("ui-selected");
        d.selecting = false;
        d.selected = true;
        d.startselected = true;
        f._trigger("selected", c, {
          selected: d.element
        })
      });
      this._trigger("stop", c);
      this.helper.remove();
      return false
    }
  });
  e.extend(e.ui.selectable, {
    version: "1.8.16"
  })
})(jQuery);; (function(d) {
  d.widget("ui.sortable", d.ui.mouse, {
    widgetEventPrefix: "sort",
    options: {
      appendTo: "parent",
      axis: false,
      connectWith: false,
      containment: false,
      cursor: "auto",
      cursorAt: false,
      dropOnEmpty: true,
      forcePlaceholderSize: false,
      forceHelperSize: false,
      grid: false,
      handle: false,
      helper: "original",
      items: "> *",
      opacity: false,
      placeholder: false,
      revert: false,
      scroll: true,
      scrollSensitivity: 20,
      scrollSpeed: 20,
      scope: "default",
      tolerance: "intersect",
      zIndex: 1E3
    },
    _create: function() {
      var a = this.options;
      this.containerCache = {};
      this.element.addClass("ui-sortable");
      this.refresh();
      this.floating = this.items.length ? a.axis === "x" || /left|right/.test(this.items[0].item.css("float")) || /inline|table-cell/.test(this.items[0].item.css("display")) : false;
      this.offset = this.element.offset();
      this._mouseInit()
    },
    destroy: function() {
      this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");
      this._mouseDestroy();
      for (var a = this.items.length - 1; a >= 0; a--) this.items[a].item.removeData("sortable-item");
      return this
    },
    _setOption: function(a, b) {
      if (a === "disabled") {
        this.options[a] = b;
        this.widget()[b ? "addClass": "removeClass"]("ui-sortable-disabled")
      } else d.Widget.prototype._setOption.apply(this, arguments)
    },
    _mouseCapture: function(a, b) {
      if (this.reverting) return false;
      if (this.options.disabled || this.options.type == "static") return false;
      this._refreshItems(a);
      var c = null,
      e = this;
      d(a.target).parents().each(function() {
        if (d.data(this, "sortable-item") == e) {
          c = d(this);
          return false
        }
      });
      if (d.data(a.target, "sortable-item") == e) c = d(a.target);
      if (!c) return false;
      if (this.options.handle && !b) {
        var f = false;
        d(this.options.handle, c).find("*").andSelf().each(function() {
          if (this == a.target) f = true
        });
        if (!f) return false
      }
      this.currentItem = c;
      this._removeCurrentsFromItems();
      return true
    },
    _mouseStart: function(a, b, c) {
      b = this.options;
      var e = this;
      this.currentContainer = this;
      this.refreshPositions();
      this.helper = this._createHelper(a);
      this._cacheHelperProportions();
      this._cacheMargins();
      this.scrollParent = this.helper.scrollParent();
      this.offset = this.currentItem.offset();
      this.offset = {
        top: this.offset.top - this.margins.top,
        left: this.offset.left - this.margins.left
      };
      this.helper.css("position", "absolute");
      this.cssPosition = this.helper.css("position");
      d.extend(this.offset, {
        click: {
          left: a.pageX - this.offset.left,
          top: a.pageY - this.offset.top
        },
        parent: this._getParentOffset(),
        relative: this._getRelativeOffset()
      });
      this.originalPosition = this._generatePosition(a);
      this.originalPageX = a.pageX;
      this.originalPageY = a.pageY;
      b.cursorAt && this._adjustOffsetFromHelper(b.cursorAt);
      this.domPosition = {
        prev: this.currentItem.prev()[0],
        parent: this.currentItem.parent()[0]
      };
      this.helper[0] != this.currentItem[0] && this.currentItem.hide();
      this._createPlaceholder();
      b.containment && this._setContainment();
      if (b.cursor) {
        if (d("body").css("cursor")) this._storedCursor = d("body").css("cursor");
        d("body").css("cursor", b.cursor)
      }
      if (b.opacity) {
        if (this.helper.css("opacity")) this._storedOpacity = this.helper.css("opacity");
        this.helper.css("opacity", b.opacity)
      }
      if (b.zIndex) {
        if (this.helper.css("zIndex")) this._storedZIndex = this.helper.css("zIndex");
        this.helper.css("zIndex", b.zIndex)
      }
      if (this.scrollParent[0] != document && this.scrollParent[0].tagName != "HTML") this.overflowOffset = this.scrollParent.offset();
      this._trigger("start", a, this._uiHash());
      this._preserveHelperProportions || this._cacheHelperProportions();
      if (!c) for (c = this.containers.length - 1; c >= 0; c--) this.containers[c]._trigger("activate", a, e._uiHash(this));
      if (d.ui.ddmanager) d.ui.ddmanager.current = this;
      d.ui.ddmanager && !b.dropBehaviour && d.ui.ddmanager.prepareOffsets(this, a);
      this.dragging = true;
      this.helper.addClass("ui-sortable-helper");
      this._mouseDrag(a);
      return true
    },
    _mouseDrag: function(a) {
      this.position = this._generatePosition(a);
      this.positionAbs = this._convertPositionTo("absolute");
      if (!this.lastPositionAbs) this.lastPositionAbs = this.positionAbs;
      if (this.options.scroll) {
        var b = this.options,
        c = false;
        if (this.scrollParent[0] != document && this.scrollParent[0].tagName != "HTML") {
          if (this.overflowOffset.top + this.scrollParent[0].offsetHeight - a.pageY < b.scrollSensitivity) this.scrollParent[0].scrollTop = c = this.scrollParent[0].scrollTop + b.scrollSpeed;
          else if (a.pageY - this.overflowOffset.top < b.scrollSensitivity) this.scrollParent[0].scrollTop = c = this.scrollParent[0].scrollTop - b.scrollSpeed;
          if (this.overflowOffset.left + this.scrollParent[0].offsetWidth - a.pageX < b.scrollSensitivity) this.scrollParent[0].scrollLeft = c = this.scrollParent[0].scrollLeft + b.scrollSpeed;
          else if (a.pageX - this.overflowOffset.left < b.scrollSensitivity) this.scrollParent[0].scrollLeft = c = this.scrollParent[0].scrollLeft - b.scrollSpeed
        } else {
          if (a.pageY - d(document).scrollTop() < b.scrollSensitivity) c = d(document).scrollTop(d(document).scrollTop() - b.scrollSpeed);
          else if (d(window).height() - (a.pageY - d(document).scrollTop()) < b.scrollSensitivity) c = d(document).scrollTop(d(document).scrollTop() + b.scrollSpeed);
          if (a.pageX - d(document).scrollLeft() < b.scrollSensitivity) c = d(document).scrollLeft(d(document).scrollLeft() - b.scrollSpeed);
          else if (d(window).width() - (a.pageX - d(document).scrollLeft()) < b.scrollSensitivity) c = d(document).scrollLeft(d(document).scrollLeft() + b.scrollSpeed)
        }
        c !== false && d.ui.ddmanager && !b.dropBehaviour && d.ui.ddmanager.prepareOffsets(this, a)
      }
      this.positionAbs = this._convertPositionTo("absolute");
      if (!this.options.axis || this.options.axis != "y") this.helper[0].style.left = this.position.left + "px";
      if (!this.options.axis || this.options.axis != "x") this.helper[0].style.top = this.position.top + "px";
      for (b = this.items.length - 1; b >= 0; b--) {
        c = this.items[b];
        var e = c.item[0],
        f = this._intersectsWithPointer(c);
        if (f) if (e != this.currentItem[0] && this.placeholder[f == 1 ? "next": "prev"]()[0] != e && !d.ui.contains(this.placeholder[0], e) && (this.options.type == "semi-dynamic" ? !d.ui.contains(this.element[0], e) : true)) {
          this.direction = f == 1 ? "down": "up";
          if (this.options.tolerance == "pointer" || this._intersectsWithSides(c)) this._rearrange(a, c);
          else break;
          this._trigger("change", a, this._uiHash());
          break
        }
      }
      this._contactContainers(a);
      d.ui.ddmanager && d.ui.ddmanager.drag(this, a);
      this._trigger("sort", a, this._uiHash());
      this.lastPositionAbs = this.positionAbs;
      return false
    },
    _mouseStop: function(a, b) {
      if (a) {
        d.ui.ddmanager && !this.options.dropBehaviour && d.ui.ddmanager.drop(this, a);
        if (this.options.revert) {
          var c = this;
          b = c.placeholder.offset();
          c.reverting = true;
          d(this.helper).animate({
            left: b.left - this.offset.parent.left - c.margins.left + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollLeft),
            top: b.top - this.offset.parent.top - c.margins.top + (this.offsetParent[0] == document.body ? 0 : this.offsetParent[0].scrollTop)
          },
          parseInt(this.options.revert, 10) || 500,
          function() {
            c._clear(a)
          })
        } else this._clear(a, b);
        return false
      }
    },
    cancel: function() {
      var a = this;
      if (this.dragging) {
        this._mouseUp({
          target: null
        });
        this.options.helper == "original" ? this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper") : this.currentItem.show();
        for (var b = this.containers.length - 1; b >= 0; b--) {
          this.containers[b]._trigger("deactivate", null, a._uiHash(this));
          if (this.containers[b].containerCache.over) {
            this.containers[b]._trigger("out", null, a._uiHash(this));
            this.containers[b].containerCache.over = 0
          }
        }
      }
      if (this.placeholder) {
        this.placeholder[0].parentNode && this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
        this.options.helper != "original" && this.helper && this.helper[0].parentNode && this.helper.remove();
        d.extend(this, {
          helper: null,
          dragging: false,
          reverting: false,
          _noFinalSort: null
        });
        this.domPosition.prev ? d(this.domPosition.prev).after(this.currentItem) : d(this.domPosition.parent).prepend(this.currentItem)
      }
      return this
    },
    serialize: function(a) {
      var b = this._getItemsAsjQuery(a && a.connected),
      c = [];
      a = a || {};
      d(b).each(function() {
        var e = (d(a.item || this).attr(a.attribute || "id") || "").match(a.expression || /(.+)[-=_](.+)/);
        if (e) c.push((a.key || e[1] + "[]") + "=" + (a.key && a.expression ? e[1] : e[2]))
      }); ! c.length && a.key && c.push(a.key + "=");
      return c.join("&")
    },
    toArray: function(a) {
      var b = this._getItemsAsjQuery(a && a.connected),
      c = [];
      a = a || {};
      b.each(function() {
        c.push(d(a.item || this).attr(a.attribute || "id") || "")
      });
      return c
    },
    _intersectsWith: function(a) {
      var b = this.positionAbs.left,
      c = b + this.helperProportions.width,
      e = this.positionAbs.top,
      f = e + this.helperProportions.height,
      g = a.left,
      h = g + a.width,
      i = a.top,
      k = i + a.height,
      j = this.offset.click.top,
      l = this.offset.click.left;
      j = e + j > i && e + j < k && b + l > g && b + l < h;
      return this.options.tolerance == "pointer" || this.options.forcePointerForContainers || this.options.tolerance != "pointer" && this.helperProportions[this.floating ? "width": "height"] > a[this.floating ? "width": "height"] ? j: g < b + this.helperProportions.width / 2 && c - this.helperProportions.width / 2 < h && i < e + this.helperProportions.height / 2 && f - this.helperProportions.height / 2 < k
    },
    _intersectsWithPointer: function(a) {
      var b = d.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, a.top, a.height);
      a = d.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, a.left, a.width);
      b = b && a;
      a = this._getDragVerticalDirection();
      var c = this._getDragHorizontalDirection();
      if (!b) return false;
      return this.floating ? c && c == "right" || a == "down" ? 2 : 1 : a && (a == "down" ? 2 : 1)
    },
    _intersectsWithSides: function(a) {
      var b = d.ui.isOverAxis(this.positionAbs.top + this.offset.click.top, a.top + a.height / 2, a.height);
      a = d.ui.isOverAxis(this.positionAbs.left + this.offset.click.left, a.left + a.width / 2, a.width);
      var c = this._getDragVerticalDirection(),
      e = this._getDragHorizontalDirection();
      return this.floating && e ? e == "right" && a || e == "left" && !a: c && (c == "down" && b || c == "up" && !b)
    },
    _getDragVerticalDirection: function() {
      var a = this.positionAbs.top - this.lastPositionAbs.top;
      return a != 0 && (a > 0 ? "down": "up")
    },
    _getDragHorizontalDirection: function() {
      var a = this.positionAbs.left - this.lastPositionAbs.left;
      return a != 0 && (a > 0 ? "right": "left")
    },
    refresh: function(a) {
      this._refreshItems(a);
      this.refreshPositions();
      return this
    },
    _connectWith: function() {
      var a = this.options;
      return a.connectWith.constructor == String ? [a.connectWith] : a.connectWith
    },
    _getItemsAsjQuery: function(a) {
      var b = [],
      c = [],
      e = this._connectWith();
      if (e && a) for (a = e.length - 1; a >= 0; a--) for (var f = d(e[a]), g = f.length - 1; g >= 0; g--) {
        var h = d.data(f[g], "sortable");
        if (h && h != this && !h.options.disabled) c.push([d.isFunction(h.options.items) ? h.options.items.call(h.element) : d(h.options.items, h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), h])
      }
      c.push([d.isFunction(this.options.items) ? this.options.items.call(this.element, null, {
        options: this.options,
        item: this.currentItem
      }) : d(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]);
      for (a = c.length - 1; a >= 0; a--) c[a][0].each(function() {
        b.push(this)
      });
      return d(b)
    },
    _removeCurrentsFromItems: function() {
      for (var a = this.currentItem.find(":data(sortable-item)"), b = 0; b < this.items.length; b++) for (var c = 0; c < a.length; c++) a[c] == this.items[b].item[0] && this.items.splice(b, 1)
    },
    _refreshItems: function(a) {
      this.items = [];
      this.containers = [this];
      var b = this.items,
      c = [[d.isFunction(this.options.items) ? this.options.items.call(this.element[0], a, {
        item: this.currentItem
      }) : d(this.options.items, this.element), this]],
      e = this._connectWith();
      if (e) for (var f = e.length - 1; f >= 0; f--) for (var g = d(e[f]), h = g.length - 1; h >= 0; h--) {
        var i = d.data(g[h], "sortable");
        if (i && i != this && !i.options.disabled) {
          c.push([d.isFunction(i.options.items) ? i.options.items.call(i.element[0], a, {
            item: this.currentItem
          }) : d(i.options.items, i.element), i]);
          this.containers.push(i)
        }
      }
      for (f = c.length - 1; f >= 0; f--) {
        a = c[f][1];
        e = c[f][0];
        h = 0;
        for (g = e.length; h < g; h++) {
          i = d(e[h]);
          i.data("sortable-item", a);
          b.push({
            item: i,
            instance: a,
            width: 0,
            height: 0,
            left: 0,
            top: 0
          })
        }
      }
    },
    refreshPositions: function(a) {
      if (this.offsetParent && this.helper) this.offset.parent = this._getParentOffset();
      for (var b = this.items.length - 1; b >= 0; b--) {
        var c = this.items[b];
        if (! (c.instance != this.currentContainer && this.currentContainer && c.item[0] != this.currentItem[0])) {
          var e = this.options.toleranceElement ? d(this.options.toleranceElement, c.item) : c.item;
          if (!a) {
            c.width = e.outerWidth();
            c.height = e.outerHeight()
          }
          e = e.offset();
          c.left = e.left;
          c.top = e.top
        }
      }
      if (this.options.custom && this.options.custom.refreshContainers) this.options.custom.refreshContainers.call(this);
      else for (b = this.containers.length - 1; b >= 0; b--) {
        e = this.containers[b].element.offset();
        this.containers[b].containerCache.left = e.left;
        this.containers[b].containerCache.top = e.top;
        this.containers[b].containerCache.width = this.containers[b].element.outerWidth();
        this.containers[b].containerCache.height = this.containers[b].element.outerHeight()
      }
      return this
    },
    _createPlaceholder: function(a) {
      var b = a || this,
      c = b.options;
      if (!c.placeholder || c.placeholder.constructor == String) {
        var e = c.placeholder;
        c.placeholder = {
          element: function() {
            var f = d(document.createElement(b.currentItem[0].nodeName)).addClass(e || b.currentItem[0].className + " ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];
            if (!e) f.style.visibility = "hidden";
            return f
          },
          update: function(f, g) {
            if (! (e && !c.forcePlaceholderSize)) {
              g.height() || g.height(b.currentItem.innerHeight() - parseInt(b.currentItem.css("paddingTop") || 0, 10) - parseInt(b.currentItem.css("paddingBottom") || 0, 10));
              g.width() || g.width(b.currentItem.innerWidth() - parseInt(b.currentItem.css("paddingLeft") || 0, 10) - parseInt(b.currentItem.css("paddingRight") || 0, 10))
            }
          }
        }
      }
      b.placeholder = d(c.placeholder.element.call(b.element, b.currentItem));
      b.currentItem.after(b.placeholder);
      c.placeholder.update(b, b.placeholder)
    },
    _contactContainers: function(a) {
      for (var b = null,
      c = null,
      e = this.containers.length - 1; e >= 0; e--) if (!d.ui.contains(this.currentItem[0], this.containers[e].element[0])) if (this._intersectsWith(this.containers[e].containerCache)) {
        if (! (b && d.ui.contains(this.containers[e].element[0], b.element[0]))) {
          b = this.containers[e];
          c = e
        }
      } else if (this.containers[e].containerCache.over) {
        this.containers[e]._trigger("out", a, this._uiHash(this));
        this.containers[e].containerCache.over = 0
      }
      if (b) if (this.containers.length === 1) {
        this.containers[c]._trigger("over", a, this._uiHash(this));
        this.containers[c].containerCache.over = 1
      } else if (this.currentContainer != this.containers[c]) {
        b = 1E4;
        e = null;
        for (var f = this.positionAbs[this.containers[c].floating ? "left": "top"], g = this.items.length - 1; g >= 0; g--) if (d.ui.contains(this.containers[c].element[0], this.items[g].item[0])) {
          var h = this.items[g][this.containers[c].floating ? "left": "top"];
          if (Math.abs(h - f) < b) {
            b = Math.abs(h - f);
            e = this.items[g]
          }
        }
        if (e || this.options.dropOnEmpty) {
          this.currentContainer = this.containers[c];
          e ? this._rearrange(a, e, null, true) : this._rearrange(a, null, this.containers[c].element, true);
          this._trigger("change", a, this._uiHash());
          this.containers[c]._trigger("change", a, this._uiHash(this));
          this.options.placeholder.update(this.currentContainer, this.placeholder);
          this.containers[c]._trigger("over", a, this._uiHash(this));
          this.containers[c].containerCache.over = 1
        }
      }
    },
    _createHelper: function(a) {
      var b = this.options;
      a = d.isFunction(b.helper) ? d(b.helper.apply(this.element[0], [a, this.currentItem])) : b.helper == "clone" ? this.currentItem.clone() : this.currentItem;
      a.parents("body").length || d(b.appendTo != "parent" ? b.appendTo: this.currentItem[0].parentNode)[0].appendChild(a[0]);
      if (a[0] == this.currentItem[0]) this._storedCSS = {
        width: this.currentItem[0].style.width,
        height: this.currentItem[0].style.height,
        position: this.currentItem.css("position"),
        top: this.currentItem.css("top"),
        left: this.currentItem.css("left")
      };
      if (a[0].style.width == "" || b.forceHelperSize) a.width(this.currentItem.width());
      if (a[0].style.height == "" || b.forceHelperSize) a.height(this.currentItem.height());
      return a
    },
    _adjustOffsetFromHelper: function(a) {
      if (typeof a == "string") a = a.split(" ");
      if (d.isArray(a)) a = {
        left: +a[0],
        top: +a[1] || 0
      };
      if ("left" in a) this.offset.click.left = a.left + this.margins.left;
      if ("right" in a) this.offset.click.left = this.helperProportions.width - a.right + this.margins.left;
      if ("top" in a) this.offset.click.top = a.top + this.margins.top;
      if ("bottom" in a) this.offset.click.top = this.helperProportions.height - a.bottom + this.margins.top
    },
    _getParentOffset: function() {
      this.offsetParent = this.helper.offsetParent();
      var a = this.offsetParent.offset();
      if (this.cssPosition == "absolute" && this.scrollParent[0] != document && d.ui.contains(this.scrollParent[0], this.offsetParent[0])) {
        a.left += this.scrollParent.scrollLeft();
        a.top += this.scrollParent.scrollTop()
      }
      if (this.offsetParent[0] == document.body || this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() == "html" && d.browser.msie) a = {
        top: 0,
        left: 0
      };
      return {
        top: a.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
        left: a.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
      }
    },
    _getRelativeOffset: function() {
      if (this.cssPosition == "relative") {
        var a = this.currentItem.position();
        return {
          top: a.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(),
          left: a.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft()
        }
      } else return {
        top: 0,
        left: 0
      }
    },
    _cacheMargins: function() {
      this.margins = {
        left: parseInt(this.currentItem.css("marginLeft"), 10) || 0,
        top: parseInt(this.currentItem.css("marginTop"), 10) || 0
      }
    },
    _cacheHelperProportions: function() {
      this.helperProportions = {
        width: this.helper.outerWidth(),
        height: this.helper.outerHeight()
      }
    },
    _setContainment: function() {
      var a = this.options;
      if (a.containment == "parent") a.containment = this.helper[0].parentNode;
      if (a.containment == "document" || a.containment == "window") this.containment = [0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, d(a.containment == "document" ? document: window).width() - this.helperProportions.width - this.margins.left, (d(a.containment == "document" ? document: window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top];
      if (!/^(document|window|parent)$/.test(a.containment)) {
        var b = d(a.containment)[0];
        a = d(a.containment).offset();
        var c = d(b).css("overflow") != "hidden";
        this.containment = [a.left + (parseInt(d(b).css("borderLeftWidth"), 10) || 0) + (parseInt(d(b).css("paddingLeft"), 10) || 0) - this.margins.left, a.top + (parseInt(d(b).css("borderTopWidth"), 10) || 0) + (parseInt(d(b).css("paddingTop"), 10) || 0) - this.margins.top, a.left + (c ? Math.max(b.scrollWidth, b.offsetWidth) : b.offsetWidth) - (parseInt(d(b).css("borderLeftWidth"), 10) || 0) - (parseInt(d(b).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left, a.top + (c ? Math.max(b.scrollHeight, b.offsetHeight) : b.offsetHeight) - (parseInt(d(b).css("borderTopWidth"), 10) || 0) - (parseInt(d(b).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top]
      }
    },
    _convertPositionTo: function(a, b) {
      if (!b) b = this.position;
      a = a == "absolute" ? 1 : -1;
      var c = this.cssPosition == "absolute" && !(this.scrollParent[0] != document && d.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent: this.scrollParent,
      e = /(html|body)/i.test(c[0].tagName);
      return {
        top: b.top + this.offset.relative.top * a + this.offset.parent.top * a - (d.browser.safari && this.cssPosition == "fixed" ? 0 : (this.cssPosition == "fixed" ? -this.scrollParent.scrollTop() : e ? 0 : c.scrollTop()) * a),
        left: b.left + this.offset.relative.left * a + this.offset.parent.left * a - (d.browser.safari && this.cssPosition == "fixed" ? 0 : (this.cssPosition == "fixed" ? -this.scrollParent.scrollLeft() : e ? 0 : c.scrollLeft()) * a)
      }
    },
    _generatePosition: function(a) {
      var b = this.options,
      c = this.cssPosition == "absolute" && !(this.scrollParent[0] != document && d.ui.contains(this.scrollParent[0], this.offsetParent[0])) ? this.offsetParent: this.scrollParent,
      e = /(html|body)/i.test(c[0].tagName);
      if (this.cssPosition == "relative" && !(this.scrollParent[0] != document && this.scrollParent[0] != this.offsetParent[0])) this.offset.relative = this._getRelativeOffset();
      var f = a.pageX,
      g = a.pageY;
      if (this.originalPosition) {
        if (this.containment) {
          if (a.pageX - this.offset.click.left < this.containment[0]) f = this.containment[0] + this.offset.click.left;
          if (a.pageY - this.offset.click.top < this.containment[1]) g = this.containment[1] + this.offset.click.top;
          if (a.pageX - this.offset.click.left > this.containment[2]) f = this.containment[2] + this.offset.click.left;
          if (a.pageY - this.offset.click.top > this.containment[3]) g = this.containment[3] + this.offset.click.top
        }
        if (b.grid) {
          g = this.originalPageY + Math.round((g - this.originalPageY) / b.grid[1]) * b.grid[1];
          g = this.containment ? !(g - this.offset.click.top < this.containment[1] || g - this.offset.click.top > this.containment[3]) ? g: !(g - this.offset.click.top < this.containment[1]) ? g - b.grid[1] : g + b.grid[1] : g;
          f = this.originalPageX + Math.round((f - this.originalPageX) / b.grid[0]) * b.grid[0];
          f = this.containment ? !(f - this.offset.click.left < this.containment[0] || f - this.offset.click.left > this.containment[2]) ? f: !(f - this.offset.click.left < this.containment[0]) ? f - b.grid[0] : f + b.grid[0] : f
        }
      }
      return {
        top: g - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + (d.browser.safari && this.cssPosition == "fixed" ? 0 : this.cssPosition == "fixed" ? -this.scrollParent.scrollTop() : e ? 0 : c.scrollTop()),
        left: f - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + (d.browser.safari && this.cssPosition == "fixed" ? 0 : this.cssPosition == "fixed" ? -this.scrollParent.scrollLeft() : e ? 0 : c.scrollLeft())
      }
    },
    _rearrange: function(a, b, c, e) {
      c ? c[0].appendChild(this.placeholder[0]) : b.item[0].parentNode.insertBefore(this.placeholder[0], this.direction == "down" ? b.item[0] : b.item[0].nextSibling);
      this.counter = this.counter ? ++this.counter: 1;
      var f = this,
      g = this.counter;
      window.setTimeout(function() {
        g == f.counter && f.refreshPositions(!e)
      },
      0)
    },
    _clear: function(a, b) {
      this.reverting = false;
      var c = []; ! this._noFinalSort && this.currentItem.parent().length && this.placeholder.before(this.currentItem);
      this._noFinalSort = null;
      if (this.helper[0] == this.currentItem[0]) {
        for (var e in this._storedCSS) if (this._storedCSS[e] == "auto" || this._storedCSS[e] == "static") this._storedCSS[e] = "";
        this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")
      } else this.currentItem.show();
      this.fromOutside && !b && c.push(function(f) {
        this._trigger("receive", f, this._uiHash(this.fromOutside))
      });
      if ((this.fromOutside || this.domPosition.prev != this.currentItem.prev().not(".ui-sortable-helper")[0] || this.domPosition.parent != this.currentItem.parent()[0]) && !b) c.push(function(f) {
        this._trigger("update", f, this._uiHash())
      });
      if (!d.ui.contains(this.element[0], this.currentItem[0])) {
        b || c.push(function(f) {
          this._trigger("remove", f, this._uiHash())
        });
        for (e = this.containers.length - 1; e >= 0; e--) if (d.ui.contains(this.containers[e].element[0], this.currentItem[0]) && !b) {
          c.push(function(f) {
            return function(g) {
              f._trigger("receive", g, this._uiHash(this))
            }
          }.call(this, this.containers[e]));
          c.push(function(f) {
            return function(g) {
              f._trigger("update", g, this._uiHash(this))
            }
          }.call(this, this.containers[e]))
        }
      }
      for (e = this.containers.length - 1; e >= 0; e--) {
        b || c.push(function(f) {
          return function(g) {
            f._trigger("deactivate", g, this._uiHash(this))
          }
        }.call(this, this.containers[e]));
        if (this.containers[e].containerCache.over) {
          c.push(function(f) {
            return function(g) {
              f._trigger("out", g, this._uiHash(this))
            }
          }.call(this, this.containers[e]));
          this.containers[e].containerCache.over = 0
        }
      }
      this._storedCursor && d("body").css("cursor", this._storedCursor);
      this._storedOpacity && this.helper.css("opacity", this._storedOpacity);
      if (this._storedZIndex) this.helper.css("zIndex", this._storedZIndex == "auto" ? "": this._storedZIndex);
      this.dragging = false;
      if (this.cancelHelperRemoval) {
        if (!b) {
          this._trigger("beforeStop", a, this._uiHash());
          for (e = 0; e < c.length; e++) c[e].call(this, a);
          this._trigger("stop", a, this._uiHash())
        }
        return false
      }
      b || this._trigger("beforeStop", a, this._uiHash());
      this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
      this.helper[0] != this.currentItem[0] && this.helper.remove();
      this.helper = null;
      if (!b) {
        for (e = 0; e < c.length; e++) c[e].call(this, a);
        this._trigger("stop", a, this._uiHash())
      }
      this.fromOutside = false;
      return true
    },
    _trigger: function() {
      d.Widget.prototype._trigger.apply(this, arguments) === false && this.cancel()
    },
    _uiHash: function(a) {
      var b = a || this;
      return {
        helper: b.helper,
        placeholder: b.placeholder || d([]),
        position: b.position,
        originalPosition: b.originalPosition,
        offset: b.positionAbs,
        item: b.currentItem,
        sender: a ? a.element: null
      }
    }
  });
  d.extend(d.ui.sortable, {
    version: "1.8.16"
  })
})(jQuery);; (function(c) {
  c.widget("ui.accordion", {
    options: {
      active: 0,
      animated: "slide",
      autoHeight: true,
      clearStyle: false,
      collapsible: false,
      event: "click",
      fillSpace: false,
      header: "> li > :first-child,> :not(li):even",
      icons: {
        header: "ui-icon-triangle-1-e",
        headerSelected: "ui-icon-triangle-1-s"
      },
      navigation: false,
      navigationFilter: function() {
        return this.href.toLowerCase() === location.href.toLowerCase()
      }
    },
    _create: function() {
      var a = this,
      b = a.options;
      a.running = 0;
      a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix");
      a.headers = a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",
      function() {
        b.disabled || c(this).addClass("ui-state-hover")
      }).bind("mouseleave.accordion",
      function() {
        b.disabled || c(this).removeClass("ui-state-hover")
      }).bind("focus.accordion",
      function() {
        b.disabled || c(this).addClass("ui-state-focus")
      }).bind("blur.accordion",
      function() {
        b.disabled || c(this).removeClass("ui-state-focus")
      });
      a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
      if (b.navigation) {
        var d = a.element.find("a").filter(b.navigationFilter).eq(0);
        if (d.length) {
          var h = d.closest(".ui-accordion-header");
          a.active = h.length ? h: d.closest(".ui-accordion-content").prev()
        }
      }
      a.active = a._findActive(a.active || b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");
      a.active.next().addClass("ui-accordion-content-active");
      a._createIcons();
      a.resize();
      a.element.attr("role", "tablist");
      a.headers.attr("role", "tab").bind("keydown.accordion",
      function(f) {
        return a._keydown(f)
      }).next().attr("role", "tabpanel");
      a.headers.not(a.active || "").attr({
        "aria-expanded": "false",
        "aria-selected": "false",
        tabIndex: -1
      }).next().hide();
      a.active.length ? a.active.attr({
        "aria-expanded": "true",
        "aria-selected": "true",
        tabIndex: 0
      }) : a.headers.eq(0).attr("tabIndex", 0);
      c.browser.safari || a.headers.find("a").attr("tabIndex", -1);
      b.event && a.headers.bind(b.event.split(" ").join(".accordion ") + ".accordion",
      function(f) {
        a._clickHandler.call(a, f, this);
        f.preventDefault()
      })
    },
    _createIcons: function() {
      var a = this.options;
      if (a.icons) {
        c("<span></span>").addClass("ui-icon " + a.icons.header).prependTo(this.headers);
        this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);
        this.element.addClass("ui-accordion-icons")
      }
    },
    _destroyIcons: function() {
      this.headers.children(".ui-icon").remove();
      this.element.removeClass("ui-accordion-icons")
    },
    destroy: function() {
      var a = this.options;
      this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");
      this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex");
      this.headers.find("a").removeAttr("tabIndex");
      this._destroyIcons();
      var b = this.headers.next().css("display", "").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");
      if (a.autoHeight || a.fillHeight) b.css("height", "");
      return c.Widget.prototype.destroy.call(this)
    },
    _setOption: function(a, b) {
      c.Widget.prototype._setOption.apply(this, arguments);
      a == "active" && this.activate(b);
      if (a == "icons") {
        this._destroyIcons();
        b && this._createIcons()
      }
      if (a == "disabled") this.headers.add(this.headers.next())[b ? "addClass": "removeClass"]("ui-accordion-disabled ui-state-disabled")
    },
    _keydown: function(a) {
      if (! (this.options.disabled || a.altKey || a.ctrlKey)) {
        var b = c.ui.keyCode,
        d = this.headers.length,
        h = this.headers.index(a.target),
        f = false;
        switch (a.keyCode) {
        case b.RIGHT:
        case b.DOWN:
          f = this.headers[(h + 1) % d];
          break;
        case b.LEFT:
        case b.UP:
          f = this.headers[(h - 1 + d) % d];
          break;
        case b.SPACE:
        case b.ENTER:
          this._clickHandler({
            target:
            a.target
          },
          a.target);
          a.preventDefault()
        }
        if (f) {
          c(a.target).attr("tabIndex", -1);
          c(f).attr("tabIndex", 0);
          f.focus();
          return false
        }
        return true
      }
    },
    resize: function() {
      var a = this.options,
      b;
      if (a.fillSpace) {
        if (c.browser.msie) {
          var d = this.element.parent().css("overflow");
          this.element.parent().css("overflow", "hidden")
        }
        b = this.element.parent().height();
        c.browser.msie && this.element.parent().css("overflow", d);
        this.headers.each(function() {
          b -= c(this).outerHeight(true)
        });
        this.headers.next().each(function() {
          c(this).height(Math.max(0, b - c(this).innerHeight() + c(this).height()))
        }).css("overflow", "auto")
      } else if (a.autoHeight) {
        b = 0;
        this.headers.next().each(function() {
          b = Math.max(b, c(this).height("").height())
        }).height(b)
      }
      return this
    },
    activate: function(a) {
      this.options.active = a;
      a = this._findActive(a)[0];
      this._clickHandler({
        target: a
      },
      a);
      return this
    },
    _findActive: function(a) {
      return a ? typeof a === "number" ? this.headers.filter(":eq(" + a + ")") : this.headers.not(this.headers.not(a)) : a === false ? c([]) : this.headers.filter(":eq(0)")
    },
    _clickHandler: function(a, b) {
      var d = this.options;
      if (!d.disabled) if (a.target) {
        a = c(a.currentTarget || b);
        b = a[0] === this.active[0];
        d.active = d.collapsible && b ? false: this.headers.index(a);
        if (! (this.running || !d.collapsible && b)) {
          var h = this.active;
          j = a.next();
          g = this.active.next();
          e = {
            options: d,
            newHeader: b && d.collapsible ? c([]) : a,
            oldHeader: this.active,
            newContent: b && d.collapsible ? c([]) : j,
            oldContent: g
          };
          var f = this.headers.index(this.active[0]) > this.headers.index(a[0]);
          this.active = b ? c([]) : a;
          this._toggle(j, g, e, b, f);
          h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);
          if (!b) {
            a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);
            a.next().addClass("ui-accordion-content-active")
          }
        }
      } else if (d.collapsible) {
        this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);
        this.active.next().addClass("ui-accordion-content-active");
        var g = this.active.next(),
        e = {
          options: d,
          newHeader: c([]),
          oldHeader: d.active,
          newContent: c([]),
          oldContent: g
        },
        j = this.active = c([]);
        this._toggle(j, g, e)
      }
    },
    _toggle: function(a, b, d, h, f) {
      var g = this,
      e = g.options;
      g.toShow = a;
      g.toHide = b;
      g.data = d;
      var j = function() {
        if (g) return g._completed.apply(g, arguments)
      };
      g._trigger("changestart", null, g.data);
      g.running = b.size() === 0 ? a.size() : b.size();
      if (e.animated) {
        d = {};
        d = e.collapsible && h ? {
          toShow: c([]),
          toHide: b,
          complete: j,
          down: f,
          autoHeight: e.autoHeight || e.fillSpace
        }: {
          toShow: a,
          toHide: b,
          complete: j,
          down: f,
          autoHeight: e.autoHeight || e.fillSpace
        };
        if (!e.proxied) e.proxied = e.animated;
        if (!e.proxiedDuration) e.proxiedDuration = e.duration;
        e.animated = c.isFunction(e.proxied) ? e.proxied(d) : e.proxied;
        e.duration = c.isFunction(e.proxiedDuration) ? e.proxiedDuration(d) : e.proxiedDuration;
        h = c.ui.accordion.animations;
        var i = e.duration,
        k = e.animated;
        if (k && !h[k] && !c.easing[k]) k = "slide";
        h[k] || (h[k] = function(l) {
          this.slide(l, {
            easing: k,
            duration: i || 700
          })
        });
        h[k](d)
      } else {
        if (e.collapsible && h) a.toggle();
        else {
          b.hide();
          a.show()
        }
        j(true)
      }
      b.prev().attr({
        "aria-expanded": "false",
        "aria-selected": "false",
        tabIndex: -1
      }).blur();
      a.prev().attr({
        "aria-expanded": "true",
        "aria-selected": "true",
        tabIndex: 0
      }).focus()
    },
    _completed: function(a) {
      this.running = a ? 0 : --this.running;
      if (!this.running) {
        this.options.clearStyle && this.toShow.add(this.toHide).css({
          height: "",
          overflow: ""
        });
        this.toHide.removeClass("ui-accordion-content-active");
        if (this.toHide.length) this.toHide.parent()[0].className = this.toHide.parent()[0].className;
        this._trigger("change", null, this.data)
      }
    }
  });
  c.extend(c.ui.accordion, {
    version: "1.8.16",
    animations: {
      slide: function(a, b) {
        a = c.extend({
          easing: "swing",
          duration: 300
        },
        a, b);
        if (a.toHide.size()) if (a.toShow.size()) {
          var d = a.toShow.css("overflow"),
          h = 0,
          f = {},
          g = {},
          e;
          b = a.toShow;
          e = b[0].style.width;
          b.width(parseInt(b.parent().width(), 10) - parseInt(b.css("paddingLeft"), 10) - parseInt(b.css("paddingRight"), 10) - (parseInt(b.css("borderLeftWidth"), 10) || 0) - (parseInt(b.css("borderRightWidth"), 10) || 0));
          c.each(["height", "paddingTop", "paddingBottom"],
          function(j, i) {
            g[i] = "hide";
            j = ("" + c.css(a.toShow[0], i)).match(/^([\d+-.]+)(.*)$/);
            f[i] = {
              value: j[1],
              unit: j[2] || "px"
            }
          });
          a.toShow.css({
            height: 0,
            overflow: "hidden"
          }).show();
          a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g, {
            step: function(j, i) {
              if (i.prop == "height") h = i.end - i.start === 0 ? 0 : (i.now - i.start) / (i.end - i.start);
              a.toShow[0].style[i.prop] = h * f[i.prop].value + f[i.prop].unit
            },
            duration: a.duration,
            easing: a.easing,
            complete: function() {
              a.autoHeight || a.toShow.css("height", "");
              a.toShow.css({
                width: e,
                overflow: d
              });
              a.complete()
            }
          })
        } else a.toHide.animate({
          height: "hide",
          paddingTop: "hide",
          paddingBottom: "hide"
        },
        a);
        else a.toShow.animate({
          height: "show",
          paddingTop: "show",
          paddingBottom: "show"
        },
        a)
      },
      bounceslide: function(a) {
        this.slide(a, {
          easing: a.down ? "easeOutBounce": "swing",
          duration: a.down ? 1E3: 200
        })
      }
    }
  })
})(jQuery);; (function(d) {
  var e = 0;
  d.widget("ui.autocomplete", {
    options: {
      appendTo: "body",
      autoFocus: false,
      delay: 300,
      minLength: 1,
      position: {
        my: "left top",
        at: "left bottom",
        collision: "none"
      },
      source: null
    },
    pending: 0,
    _create: function() {
      var a = this,
      b = this.element[0].ownerDocument,
      g;
      this.element.addClass("ui-autocomplete-input").attr("autocomplete", "off").attr({
        role: "textbox",
        "aria-autocomplete": "list",
        "aria-haspopup": "true"
      }).bind("keydown.autocomplete",
      function(c) {
        if (! (a.options.disabled || a.element.propAttr("readOnly"))) {
          g = false;
          var f = d.ui.keyCode;
          switch (c.keyCode) {
          case f.PAGE_UP:
            a._move("previousPage", c);
            break;
          case f.PAGE_DOWN:
            a._move("nextPage", c);
            break;
          case f.UP:
            a._move("previous", c);
            c.preventDefault();
            break;
          case f.DOWN:
            a._move("next", c);
            c.preventDefault();
            break;
          case f.ENTER:
          case f.NUMPAD_ENTER:
            if (a.menu.active) {
              g = true;
              c.preventDefault()
            }
          case f.TAB:
            if (!a.menu.active) return;
            a.menu.select(c);
            break;
          case f.ESCAPE:
            a.element.val(a.term);
            a.close(c);
            break;
          default:
            clearTimeout(a.searching);
            a.searching = setTimeout(function() {
              if (a.term != a.element.val()) {
                a.selectedItem = null;
                a.search(null, c)
              }
            },
            a.options.delay);
            break
          }
        }
      }).bind("keypress.autocomplete",
      function(c) {
        if (g) {
          g = false;
          c.preventDefault()
        }
      }).bind("focus.autocomplete",
      function() {
        if (!a.options.disabled) {
          a.selectedItem = null;
          a.previous = a.element.val()
        }
      }).bind("blur.autocomplete",
      function(c) {
        if (!a.options.disabled) {
          clearTimeout(a.searching);
          a.closing = setTimeout(function() {
            a.close(c);
            a._change(c)
          },
          150)
        }
      });
      this._initSource();
      this.response = function() {
        return a._response.apply(a, arguments)
      };
      this.menu = d("<ul></ul>").addClass("ui-autocomplete").appendTo(d(this.options.appendTo || "body", b)[0]).mousedown(function(c) {
        var f = a.menu.element[0];
        d(c.target).closest(".ui-menu-item").length || setTimeout(function() {
          d(document).one("mousedown",
          function(h) {
            h.target !== a.element[0] && h.target !== f && !d.ui.contains(f, h.target) && a.close()
          })
        },
        1);
        setTimeout(function() {
          clearTimeout(a.closing)
        },
        13)
      }).menu({
        focus: function(c, f) {
          f = f.item.data("item.autocomplete");
          false !== a._trigger("focus", c, {
            item: f
          }) && /^key/.test(c.originalEvent.type) && a.element.val(f.value)
        },
        selected: function(c, f) {
          var h = f.item.data("item.autocomplete"),
          i = a.previous;
          if (a.element[0] !== b.activeElement) {
            a.element.focus();
            a.previous = i;
            setTimeout(function() {
              a.previous = i;
              a.selectedItem = h
            },
            1)
          }
          false !== a._trigger("select", c, {
            item: h
          }) && a.element.val(h.value);
          a.term = a.element.val();
          a.close(c);
          a.selectedItem = h
        },
        blur: function() {
          a.menu.element.is(":visible") && a.element.val() !== a.term && a.element.val(a.term)
        }
      }).zIndex(this.element.zIndex() + 1).css({
        top: 0,
        left: 0
      }).hide().data("menu");
      d.fn.bgiframe && this.menu.element.bgiframe()
    },
    destroy: function() {
      this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");
      this.menu.element.remove();
      d.Widget.prototype.destroy.call(this)
    },
    _setOption: function(a, b) {
      d.Widget.prototype._setOption.apply(this, arguments);
      a === "source" && this._initSource();
      if (a === "appendTo") this.menu.element.appendTo(d(b || "body", this.element[0].ownerDocument)[0]);
      a === "disabled" && b && this.xhr && this.xhr.abort()
    },
    _initSource: function() {
      var a = this,
      b, g;
      if (d.isArray(this.options.source)) {
        b = this.options.source;
        this.source = function(c, f) {
          f(d.ui.autocomplete.filter(b, c.term))
        }
      } else if (typeof this.options.source === "string") {
        g = this.options.source;
        this.source = function(c, f) {
          a.xhr && a.xhr.abort();
          a.xhr = d.ajax({
            url: g,
            data: c,
            dataType: "json",
            autocompleteRequest: ++e,
            success: function(h) {
              this.autocompleteRequest === e && f(h)
            },
            error: function() {
              this.autocompleteRequest === e && f([])
            }
          })
        }
      } else this.source = this.options.source
    },
    search: function(a, b) {
      a = a != null ? a: this.element.val();
      this.term = this.element.val();
      if (a.length < this.options.minLength) return this.close(b);
      clearTimeout(this.closing);
      if (this._trigger("search", b) !== false) return this._search(a)
    },
    _search: function(a) {
      this.pending++;
      this.element.addClass("ui-autocomplete-loading");
      this.source({
        term: a
      },
      this.response)
    },
    _response: function(a) {
      if (!this.options.disabled && a && a.length) {
        a = this._normalize(a);
        this._suggest(a);
        this._trigger("open")
      } else this.close();
      this.pending--;
      this.pending || this.element.removeClass("ui-autocomplete-loading")
    },
    close: function(a) {
      clearTimeout(this.closing);
      if (this.menu.element.is(":visible")) {
        this.menu.element.hide();
        this.menu.deactivate();
        this._trigger("close", a)
      }
    },
    _change: function(a) {
      this.previous !== this.element.val() && this._trigger("change", a, {
        item: this.selectedItem
      })
    },
    _normalize: function(a) {
      if (a.length && a[0].label && a[0].value) return a;
      return d.map(a,
      function(b) {
        if (typeof b === "string") return {
          label: b,
          value: b
        };
        return d.extend({
          label: b.label || b.value,
          value: b.value || b.label
        },
        b)
      })
    },
    _suggest: function(a) {
      var b = this.menu.element.empty().zIndex(this.element.zIndex() + 1);
      this._renderMenu(b, a);
      this.menu.deactivate();
      this.menu.refresh();
      b.show();
      this._resizeMenu();
      b.position(d.extend({
        of: this.element
      },
      this.options.position));
      this.options.autoFocus && this.menu.next(new d.Event("mouseover"))
    },
    _resizeMenu: function() {
      var a = this.menu.element;
      a.outerWidth(Math.max(a.width("").outerWidth(), this.element.outerWidth()))
    },
    _renderMenu: function(a, b) {
      var g = this;
      d.each(b,
      function(c, f) {
        g._renderItem(a, f)
      })
    },
    _renderItem: function(a, b) {
      return d("<li></li>").data("item.autocomplete", b).append(d("<a></a>").text(b.label)).appendTo(a)
    },
    _move: function(a, b) {
      if (this.menu.element.is(":visible")) if (this.menu.first() && /^previous/.test(a) || this.menu.last() && /^next/.test(a)) {
        this.element.val(this.term);
        this.menu.deactivate()
      } else this.menu[a](b);
      else this.search(null, b)
    },
    widget: function() {
      return this.menu.element
    }
  });
  d.extend(d.ui.autocomplete, {
    escapeRegex: function(a) {
      return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&")
    },
    filter: function(a, b) {
      var g = new RegExp(d.ui.autocomplete.escapeRegex(b), "i");
      return d.grep(a,
      function(c) {
        return g.test(c.label || c.value || c)
      })
    }
  })
})(jQuery); (function(d) {
  d.widget("ui.menu", {
    _create: function() {
      var e = this;
      this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({
        role: "listbox",
        "aria-activedescendant": "ui-active-menuitem"
      }).click(function(a) {
        if (d(a.target).closest(".ui-menu-item a").length) {
          a.preventDefault();
          e.select(a)
        }
      });
      this.refresh()
    },
    refresh: function() {
      var e = this;
      this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role", "menuitem").children("a").addClass("ui-corner-all").attr("tabindex", -1).mouseenter(function(a) {
        e.activate(a, d(this).parent())
      }).mouseleave(function() {
        e.deactivate()
      })
    },
    activate: function(e, a) {
      this.deactivate();
      if (this.hasScroll()) {
        var b = a.offset().top - this.element.offset().top,
        g = this.element.scrollTop(),
        c = this.element.height();
        if (b < 0) this.element.scrollTop(g + b);
        else b >= c && this.element.scrollTop(g + b - c + a.height())
      }
      this.active = a.eq(0).children("a").addClass("ui-state-hover").attr("id", "ui-active-menuitem").end();
      this._trigger("focus", e, {
        item: a
      })
    },
    deactivate: function() {
      if (this.active) {
        this.active.children("a").removeClass("ui-state-hover").removeAttr("id");
        this._trigger("blur");
        this.active = null
      }
    },
    next: function(e) {
      this.move("next", ".ui-menu-item:first", e)
    },
    previous: function(e) {
      this.move("prev", ".ui-menu-item:last", e)
    },
    first: function() {
      return this.active && !this.active.prevAll(".ui-menu-item").length
    },
    last: function() {
      return this.active && !this.active.nextAll(".ui-menu-item").length
    },
    move: function(e, a, b) {
      if (this.active) {
        e = this.active[e + "All"](".ui-menu-item").eq(0);
        e.length ? this.activate(b, e) : this.activate(b, this.element.children(a))
      } else this.activate(b, this.element.children(a))
    },
    nextPage: function(e) {
      if (this.hasScroll()) if (!this.active || this.last()) this.activate(e, this.element.children(".ui-menu-item:first"));
      else {
        var a = this.active.offset().top,
        b = this.element.height(),
        g = this.element.children(".ui-menu-item").filter(function() {
          var c = d(this).offset().top - a - b + d(this).height();
          return c < 10 && c > -10
        });
        g.length || (g = this.element.children(".ui-menu-item:last"));
        this.activate(e, g)
      } else this.activate(e, this.element.children(".ui-menu-item").filter(!this.active || this.last() ? ":first": ":last"))
    },
    previousPage: function(e) {
      if (this.hasScroll()) if (!this.active || this.first()) this.activate(e, this.element.children(".ui-menu-item:last"));
      else {
        var a = this.active.offset().top,
        b = this.element.height();
        result = this.element.children(".ui-menu-item").filter(function() {
          var g = d(this).offset().top - a + b - d(this).height();
          return g < 10 && g > -10
        });
        result.length || (result = this.element.children(".ui-menu-item:first"));
        this.activate(e, result)
      } else this.activate(e, this.element.children(".ui-menu-item").filter(!this.active || this.first() ? ":last": ":first"))
    },
    hasScroll: function() {
      return this.element.height() < this.element[d.fn.prop ? "prop": "attr"]("scrollHeight")
    },
    select: function(e) {
      this._trigger("selected", e, {
        item: this.active
      })
    }
  })
})(jQuery);; (function(b) {
  var h, i, j, g, l = function() {
    var a = b(this).find(":ui-button");
    setTimeout(function() {
      a.button("refresh")
    },
    1)
  },
  k = function(a) {
    var c = a.name,
    e = a.form,
    f = b([]);
    if (c) f = e ? b(e).find("[name='" + c + "']") : b("[name='" + c + "']", a.ownerDocument).filter(function() {
      return ! this.form
    });
    return f
  };
  b.widget("ui.button", {
    options: {
      disabled: null,
      text: true,
      label: null,
      icons: {
        primary: null,
        secondary: null
      }
    },
    _create: function() {
      this.element.closest("form").unbind("reset.button").bind("reset.button", l);
      if (typeof this.options.disabled !== "boolean") this.options.disabled = this.element.propAttr("disabled");
      this._determineButtonType();
      this.hasTitle = !!this.buttonElement.attr("title");
      var a = this,
      c = this.options,
      e = this.type === "checkbox" || this.type === "radio",
      f = "ui-state-hover" + (!e ? " ui-state-active": "");
      if (c.label === null) c.label = this.buttonElement.html();
      if (this.element.is(":disabled")) c.disabled = true;
      this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role", "button").bind("mouseenter.button",
      function() {
        if (!c.disabled) {

          b(this).addClass("ui-state-hover");
          this === h && b(this).addClass("ui-state-active")
        }
      }).bind("mouseleave.button",
      function() {
        c.disabled || b(this).removeClass(f)
      }).bind("click.button",
      function(d) {
        if (c.disabled) {
          d.preventDefault();
          d.stopImmediatePropagation()
        }
      });
      this.element.bind("focus.button",
      function() {
        a.buttonElement.addClass("ui-state-focus")
      }).bind("blur.button",
      function() {
        a.buttonElement.removeClass("ui-state-focus")
      });
      if (e) {
        this.element.bind("change.button",
        function() {
          g || a.refresh()
        });
        this.buttonElement.bind("mousedown.button",
        function(d) {
          if (!c.disabled) {
            g = false;
            i = d.pageX;
            j = d.pageY
          }
        }).bind("mouseup.button",
        function(d) {
          if (!c.disabled) if (i !== d.pageX || j !== d.pageY) g = true
        })
      }
      if (this.type === "checkbox") this.buttonElement.bind("click.button",
      function() {
        if (c.disabled || g) return false;
        b(this).toggleClass("ui-state-active");
        a.buttonElement.attr("aria-pressed", a.element[0].checked)
      });
      else if (this.type === "radio") this.buttonElement.bind("click.button",
      function() {
        if (c.disabled || g) return false;
        b(this).addClass("ui-state-active");
        a.buttonElement.attr("aria-pressed", "true");
        var d = a.element[0];
        k(d).not(d).map(function() {
          return b(this).button("widget")[0]
        }).removeClass("ui-state-active").attr("aria-pressed", "false")
      });
      else {
        this.buttonElement.bind("mousedown.button",
        function() {
          if (c.disabled) return false;
          b(this).addClass("ui-state-active");
          h = this;
          b(document).one("mouseup",
          function() {
            h = null
          })
        }).bind("mouseup.button",
        function() {
          if (c.disabled) return false;
          b(this).removeClass("ui-state-active")
        }).bind("keydown.button",
        function(d) {
          if (c.disabled) return false;
          if (d.keyCode == b.ui.keyCode.SPACE || d.keyCode == b.ui.keyCode.ENTER) b(this).addClass("ui-state-active")
        }).bind("keyup.button",
        function() {
          b(this).removeClass("ui-state-active")
        });
        this.buttonElement.is("a") && this.buttonElement.keyup(function(d) {
          d.keyCode === b.ui.keyCode.SPACE && b(this).click()
        })
      }
      this._setOption("disabled", c.disabled);
      this._resetButton()
    },
    _determineButtonType: function() {
      this.type = this.element.is(":checkbox") ? "checkbox": this.element.is(":radio") ? "radio": this.element.is("input") ? "input": "button";
      if (this.type === "checkbox" || this.type === "radio") {
        var a = this.element.parents().filter(":last"),
        c = "label[for='" + this.element.attr("id") + "']";
        this.buttonElement = a.find(c);
        if (!this.buttonElement.length) {
          a = a.length ? a.siblings() : this.element.siblings();
          this.buttonElement = a.filter(c);
          if (!this.buttonElement.length) this.buttonElement = a.find(c)
        }
        this.element.addClass("ui-helper-hidden-accessible"); (a = this.element.is(":checked")) && this.buttonElement.addClass("ui-state-active");
        this.buttonElement.attr("aria-pressed", a)
      } else this.buttonElement = this.element
    },
    widget: function() {
      return this.buttonElement
    },
    destroy: function() {
      this.element.removeClass("ui-helper-hidden-accessible");
      this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active  ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());
      this.hasTitle || this.buttonElement.removeAttr("title");
      b.Widget.prototype.destroy.call(this)
    },
    _setOption: function(a, c) {
      b.Widget.prototype._setOption.apply(this, arguments);
      if (a === "disabled") c ? this.element.propAttr("disabled", true) : this.element.propAttr("disabled", false);
      else this._resetButton()
    },
    refresh: function() {
      var a = this.element.is(":disabled");
      a !== this.options.disabled && this._setOption("disabled", a);
      if (this.type === "radio") k(this.element[0]).each(function() {
        b(this).is(":checked") ? b(this).button("widget").addClass("ui-state-active").attr("aria-pressed", "true") : b(this).button("widget").removeClass("ui-state-active").attr("aria-pressed", "false")
      });
      else if (this.type === "checkbox") this.element.is(":checked") ? this.buttonElement.addClass("ui-state-active").attr("aria-pressed", "true") : this.buttonElement.removeClass("ui-state-active").attr("aria-pressed", "false")
    },
    _resetButton: function() {
      if (this.type === "input") this.options.label && this.element.val(this.options.label);
      else {
        var a = this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"),
        c = b("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),
        e = this.options.icons,
        f = e.primary && e.secondary,
        d = [];
        if (e.primary || e.secondary) {
          if (this.options.text) d.push("ui-button-text-icon" + (f ? "s": e.primary ? "-primary": "-secondary"));
          e.primary && a.prepend("<span class='ui-button-icon-primary ui-icon " + e.primary + "'></span>");
          e.secondary && a.append("<span class='ui-button-icon-secondary ui-icon " + e.secondary + "'></span>");
          if (!this.options.text) {
            d.push(f ? "ui-button-icons-only": "ui-button-icon-only");
            this.hasTitle || a.attr("title", c)
          }
        } else d.push("ui-button-text-only");
        a.addClass(d.join(" "))
      }
    }
  });
  b.widget("ui.buttonset", {
    options: {
      items: ":button, :submit, :reset, :checkbox, :radio, a, :data(button)"
    },
    _create: function() {
      this.element.addClass("ui-buttonset")
    },
    _init: function() {
      this.refresh()
    },
    _setOption: function(a, c) {
      a === "disabled" && this.buttons.button("option", a, c);
      b.Widget.prototype._setOption.apply(this, arguments)
    },
    refresh: function() {
      var a = this.element.css("direction") === "ltr";
      this.buttons = this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function() {
        return b(this).button("widget")[0]
      }).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a ? "ui-corner-left": "ui-corner-right").end().filter(":last").addClass(a ? "ui-corner-right": "ui-corner-left").end().end()
    },
    destroy: function() {
      this.element.removeClass("ui-buttonset");
      this.buttons.map(function() {
        return b(this).button("widget")[0]
      }).removeClass("ui-corner-left ui-corner-right").end().button("destroy");
      b.Widget.prototype.destroy.call(this)
    }
  })
})(jQuery);; (function(c, l) {
  var m = {
    buttons: true,
    height: true,
    maxHeight: true,
    maxWidth: true,
    minHeight: true,
    minWidth: true,
    width: true
  },
  n = {
    maxHeight: true,
    maxWidth: true,
    minHeight: true,
    minWidth: true
  },
  o = c.attrFn || {
    val: true,
    css: true,
    html: true,
    text: true,
    data: true,
    width: true,
    height: true,
    offset: true,
    click: true
  };
  c.widget("ui.dialog", {
    options: {
      autoOpen: true,
      buttons: {},
      closeOnEscape: true,
      closeText: "close",
      dialogClass: "",
      draggable: true,
      hide: null,
      height: "auto",
      maxHeight: false,
      maxWidth: false,
      minHeight: 150,
      minWidth: 150,
      modal: false,
      position: {
        my: "center",
        at: "center",
        collision: "fit",
        using: function(a) {
          var b = c(this).css(a).offset().top;
          b < 0 && c(this).css("top", a.top - b)
        }
      },
      resizable: true,
      show: null,
      stack: true,
      title: "",
      width: 300,
      zIndex: 1E3
    },
    _create: function() {
      this.originalTitle = this.element.attr("title");
      if (typeof this.originalTitle !== "string") this.originalTitle = "";
      this.options.title = this.options.title || this.originalTitle;
      var a = this,
      b = a.options,
      d = b.title || "&#160;",
      e = c.ui.dialog.getTitleId(a.element),
      g = (a.uiDialog = c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all " + b.dialogClass).css({
        zIndex: b.zIndex
      }).attr("tabIndex", -1).css("outline", 0).keydown(function(i) {
        if (b.closeOnEscape && !i.isDefaultPrevented() && i.keyCode && i.keyCode === c.ui.keyCode.ESCAPE) {
          a.close(i);
          i.preventDefault()
        }
      }).attr({
        role: "dialog",
        "aria-labelledby": e
      }).mousedown(function(i) {
        a.moveToTop(false, i)
      });
      a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);
      var f = (a.uiDialogTitlebar = c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),
      h = c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role", "button").hover(function() {
        h.addClass("ui-state-hover")
      },
      function() {
        h.removeClass("ui-state-hover")
      }).focus(function() {
        h.addClass("ui-state-focus")
      }).blur(function() {
        h.removeClass("ui-state-focus")
      }).click(function(i) {
        a.close(i);
        return false
      }).appendTo(f); (a.uiDialogTitlebarCloseText = c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);
      c("<span></span>").addClass("ui-dialog-title").attr("id", e).html(d).prependTo(f);
      if (c.isFunction(b.beforeclose) && !c.isFunction(b.beforeClose)) b.beforeClose = b.beforeclose;
      f.find("*").add(f).disableSelection();
      b.draggable && c.fn.draggable && a._makeDraggable();
      b.resizable && c.fn.resizable && a._makeResizable();
      a._createButtons(b.buttons);
      a._isOpen = false;
      c.fn.bgiframe && g.bgiframe()
    },
    _init: function() {
      this.options.autoOpen && this.open()
    },
    destroy: function() {
      var a = this;
      a.overlay && a.overlay.destroy();
      a.uiDialog.hide();
      a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");
      a.uiDialog.remove();
      a.originalTitle && a.element.attr("title", a.originalTitle);
      return a
    },
    widget: function() {
      return this.uiDialog
    },
    close: function(a) {
      var b = this,
      d, e;
      if (false !== b._trigger("beforeClose", a)) {
        b.overlay && b.overlay.destroy();
        b.uiDialog.unbind("keypress.ui-dialog");
        b._isOpen = false;
        if (b.options.hide) b.uiDialog.hide(b.options.hide,
        function() {
          b._trigger("close", a)
        });
        else {
          b.uiDialog.hide();
          b._trigger("close", a)
        }
        c.ui.dialog.overlay.resize();
        if (b.options.modal) {
          d = 0;
          c(".ui-dialog").each(function() {
            if (this !== b.uiDialog[0]) {
              e = c(this).css("z-index");
              isNaN(e) || (d = Math.max(d, e))
            }
          });
          c.ui.dialog.maxZ = d
        }
        return b
      }
    },
    isOpen: function() {
      return this._isOpen
    },
    moveToTop: function(a, b) {
      var d = this,
      e = d.options;
      if (e.modal && !a || !e.stack && !e.modal) return d._trigger("focus", b);
      if (e.zIndex > c.ui.dialog.maxZ) c.ui.dialog.maxZ = e.zIndex;
      if (d.overlay) {
        c.ui.dialog.maxZ += 1;
        d.overlay.$el.css("z-index", c.ui.dialog.overlay.maxZ = c.ui.dialog.maxZ)
      }
      a = {
        scrollTop: d.element.scrollTop(),
        scrollLeft: d.element.scrollLeft()
      };
      c.ui.dialog.maxZ += 1;
      d.uiDialog.css("z-index", c.ui.dialog.maxZ);
      d.element.attr(a);
      d._trigger("focus", b);
      return d
    },
    open: function() {
      if (!this._isOpen) {
        var a = this,
        b = a.options,
        d = a.uiDialog;
        a.overlay = b.modal ? new c.ui.dialog.overlay(a) : null;
        a._size();
        a._position(b.position);
        d.show(b.show);
        a.moveToTop(true);
        b.modal && d.bind("keypress.ui-dialog",
        function(e) {
          if (e.keyCode === c.ui.keyCode.TAB) {
            var g = c(":tabbable", this),
            f = g.filter(":first");
            g = g.filter(":last");
            if (e.target === g[0] && !e.shiftKey) {
              f.focus(1);
              return false
            } else if (e.target === f[0] && e.shiftKey) {
              g.focus(1);
              return false
            }
          }
        });
        c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();
        a._isOpen = true;
        a._trigger("open");
        return a
      }
    },
    _createButtons: function(a) {
      var b = this,
      d = false,
      e = c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),
      g = c("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);
      b.uiDialog.find(".ui-dialog-buttonpane").remove();
      typeof a === "object" && a !== null && c.each(a,
      function() {
        return ! (d = true)
      });
      if (d) {
        c.each(a,
        function(f, h) {
          h = c.isFunction(h) ? {
            click: h,
            text: f
          }: h;
          var i = c('<button type="button"></button>').click(function() {
            h.click.apply(b.element[0], arguments)
          }).appendTo(g);
          c.each(h,
          function(j, k) {
            if (j !== "click") j in o ? i[j](k) : i.attr(j, k)
          });
          c.fn.button && i.button()
        });
        e.appendTo(b.uiDialog)
      }
    },
    _makeDraggable: function() {
      function a(f) {
        return {
          position: f.position,
          offset: f.offset
        }
      }
      var b = this,
      d = b.options,
      e = c(document),
      g;
      b.uiDialog.draggable({
        cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
        handle: ".ui-dialog-titlebar",
        containment: "document",
        start: function(f, h) {
          g = d.height === "auto" ? "auto": c(this).height();
          c(this).height(c(this).height()).addClass("ui-dialog-dragging");
          b._trigger("dragStart", f, a(h))
        },
        drag: function(f, h) {
          b._trigger("drag", f, a(h))
        },
        stop: function(f, h) {
          d.position = [h.position.left - e.scrollLeft(), h.position.top - e.scrollTop()];
          c(this).removeClass("ui-dialog-dragging").height(g);
          b._trigger("dragStop", f, a(h));
          c.ui.dialog.overlay.resize()
        }
      })
    },
    _makeResizable: function(a) {
      function b(f) {
        return {
          originalPosition: f.originalPosition,
          originalSize: f.originalSize,
          position: f.position,

          size: f.size
        }
      }
      a = a === l ? this.options.resizable: a;
      var d = this,
      e = d.options,
      g = d.uiDialog.css("position");
      a = typeof a === "string" ? a: "n,e,s,w,se,sw,ne,nw";
      d.uiDialog.resizable({
        cancel: ".ui-dialog-content",
        containment: "document",
        alsoResize: d.element,
        maxWidth: e.maxWidth,
        maxHeight: e.maxHeight,
        minWidth: e.minWidth,
        minHeight: d._minHeight(),
        handles: a,
        start: function(f, h) {
          c(this).addClass("ui-dialog-resizing");
          d._trigger("resizeStart", f, b(h))
        },
        resize: function(f, h) {
          d._trigger("resize", f, b(h))
        },
        stop: function(f, h) {
          c(this).removeClass("ui-dialog-resizing");
          e.height = c(this).height();
          e.width = c(this).width();
          d._trigger("resizeStop", f, b(h));
          c.ui.dialog.overlay.resize()
        }
      }).css("position", g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")
    },
    _minHeight: function() {
      var a = this.options;
      return a.height === "auto" ? a.minHeight: Math.min(a.minHeight, a.height)
    },
    _position: function(a) {
      var b = [],
      d = [0, 0],
      e;
      if (a) {
        if (typeof a === "string" || typeof a === "object" && "0" in a) {
          b = a.split ? a.split(" ") : [a[0], a[1]];
          if (b.length === 1) b[1] = b[0];
          c.each(["left", "top"],
          function(g, f) {
            if ( + b[g] === b[g]) {
              d[g] = b[g];
              b[g] = f
            }
          });
          a = {
            my: b.join(" "),
            at: b.join(" "),
            offset: d.join(" ")
          }
        }
        a = c.extend({},
        c.ui.dialog.prototype.options.position, a)
      } else a = c.ui.dialog.prototype.options.position; (e = this.uiDialog.is(":visible")) || this.uiDialog.show();
      this.uiDialog.css({
        top: 0,
        left: 0
      }).position(c.extend({
        of: window
      },
      a));
      e || this.uiDialog.hide()
    },
    _setOptions: function(a) {
      var b = this,
      d = {},
      e = false;
      c.each(a,
      function(g, f) {
        b._setOption(g, f);
        if (g in m) e = true;
        if (g in n) d[g] = f
      });
      e && this._size();
      this.uiDialog.is(":data(resizable)") && this.uiDialog.resizable("option", d)
    },
    _setOption: function(a, b) {
      var d = this,
      e = d.uiDialog;
      switch (a) {
      case "beforeclose":
        a = "beforeClose";
        break;
      case "buttons":
        d._createButtons(b);
        break;
      case "closeText":
        d.uiDialogTitlebarCloseText.text("" + b);
        break;
      case "dialogClass":
        e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all " + b);
        break;
      case "disabled":
        b ? e.addClass("ui-dialog-disabled") : e.removeClass("ui-dialog-disabled");
        break;
      case "draggable":
        var g = e.is(":data(draggable)");
        g && !b && e.draggable("destroy"); ! g && b && d._makeDraggable();
        break;
      case "position":
        d._position(b);
        break;
      case "resizable":
        (g = e.is(":data(resizable)")) && !b && e.resizable("destroy");
        g && typeof b === "string" && e.resizable("option", "handles", b); ! g && b !== false && d._makeResizable(b);
        break;
      case "title":
        c(".ui-dialog-title", d.uiDialogTitlebar).html("" + (b || "&#160;"));
        break
      }
      c.Widget.prototype._setOption.apply(d, arguments)
    },
    _size: function() {
      var a = this.options,
      b, d, e = this.uiDialog.is(":visible");
      this.element.show().css({
        width: "auto",
        minHeight: 0,
        height: 0
      });
      if (a.minWidth > a.width) a.width = a.minWidth;
      b = this.uiDialog.css({
        height: "auto",
        width: a.width
      }).height();
      d = Math.max(0, a.minHeight - b);
      if (a.height === "auto") if (c.support.minHeight) this.element.css({
        minHeight: d,
        height: "auto"
      });
      else {
        this.uiDialog.show();
        a = this.element.css("height", "auto").height();
        e || this.uiDialog.hide();
        this.element.height(Math.max(a, d))
      } else this.element.height(Math.max(a.height - b, 0));
      this.uiDialog.is(":data(resizable)") && this.uiDialog.resizable("option", "minHeight", this._minHeight())
    }
  });
  c.extend(c.ui.dialog, {
    version: "1.8.16",
    uuid: 0,
    maxZ: 0,
    getTitleId: function(a) {
      a = a.attr("id");
      if (!a) {
        this.uuid += 1;
        a = this.uuid
      }
      return "ui-dialog-title-" + a
    },
    overlay: function(a) {
      this.$el = c.ui.dialog.overlay.create(a)
    }
  });
  c.extend(c.ui.dialog.overlay, {
    instances: [],
    oldInstances: [],
    maxZ: 0,
    events: c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),
    function(a) {
      return a + ".dialog-overlay"
    }).join(" "),
    create: function(a) {
      if (this.instances.length === 0) {
        setTimeout(function() {
          c.ui.dialog.overlay.instances.length && c(document).bind(c.ui.dialog.overlay.events,
          function(d) {
            if (c(d.target).zIndex() < c.ui.dialog.overlay.maxZ) return false
          })
        },
        1);
        c(document).bind("keydown.dialog-overlay",
        function(d) {
          if (a.options.closeOnEscape && !d.isDefaultPrevented() && d.keyCode && d.keyCode === c.ui.keyCode.ESCAPE) {
            a.close(d);
            d.preventDefault()
          }
        });
        c(window).bind("resize.dialog-overlay", c.ui.dialog.overlay.resize)
      }
      var b = (this.oldInstances.pop() || c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({
        width: this.width(),
        height: this.height()
      });
      c.fn.bgiframe && b.bgiframe();
      this.instances.push(b);
      return b
    },
    destroy: function(a) {
      var b = c.inArray(a, this.instances);
      b != -1 && this.oldInstances.push(this.instances.splice(b, 1)[0]);
      this.instances.length === 0 && c([document, window]).unbind(".dialog-overlay");
      a.remove();
      var d = 0;
      c.each(this.instances,
      function() {
        d = Math.max(d, this.css("z-index"))
      });
      this.maxZ = d
    },
    height: function() {
      var a, b;
      if (c.browser.msie && c.browser.version < 7) {
        a = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight);
        b = Math.max(document.documentElement.offsetHeight, document.body.offsetHeight);
        return a < b ? c(window).height() + "px": a + "px"
      } else return c(document).height() + "px"
    },
    width: function() {
      var a, b;
      if (c.browser.msie) {
        a = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);
        b = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);
        return a < b ? c(window).width() + "px": a + "px"
      } else return c(document).width() + "px"
    },
    resize: function() {
      var a = c([]);
      c.each(c.ui.dialog.overlay.instances,
      function() {
        a = a.add(this)
      });
      a.css({
        width: 0,
        height: 0
      }).css({
        width: c.ui.dialog.overlay.width(),
        height: c.ui.dialog.overlay.height()
      })
    }
  });
  c.extend(c.ui.dialog.overlay.prototype, {
    destroy: function() {
      c.ui.dialog.overlay.destroy(this.$el)
    }
  })
})(jQuery);; (function(d) {
  d.widget("ui.slider", d.ui.mouse, {
    widgetEventPrefix: "slide",
    options: {
      animate: false,
      distance: 0,
      max: 100,
      min: 0,
      orientation: "horizontal",
      range: false,
      step: 1,
      value: 0,
      values: null
    },
    _create: function() {
      var a = this,
      b = this.options,
      c = this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),
      f = b.values && b.values.length || 1,
      e = [];
      this._mouseSliding = this._keySliding = false;
      this._animateOff = true;
      this._handleIndex = null;
      this._detectOrientation();
      this._mouseInit();
      this.element.addClass("ui-slider ui-slider-" + this.orientation + " ui-widget ui-widget-content ui-corner-all" + (b.disabled ? " ui-slider-disabled ui-disabled": ""));
      this.range = d([]);
      if (b.range) {
        if (b.range === true) {
          if (!b.values) b.values = [this._valueMin(), this._valueMin()];
          if (b.values.length && b.values.length !== 2) b.values = [b.values[0], b.values[0]]
        }
        this.range = d("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header" + (b.range === "min" || b.range === "max" ? " ui-slider-range-" + b.range: ""))
      }
      for (var j = c.length; j < f; j += 1) e.push("<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>");
      this.handles = c.add(d(e.join("")).appendTo(a.element));
      this.handle = this.handles.eq(0);
      this.handles.add(this.range).filter("a").click(function(g) {
        g.preventDefault()
      }).hover(function() {
        b.disabled || d(this).addClass("ui-state-hover")
      },
      function() {
        d(this).removeClass("ui-state-hover")
      }).focus(function() {
        if (b.disabled) d(this).blur();
        else {
          d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");
          d(this).addClass("ui-state-focus")
        }
      }).blur(function() {
        d(this).removeClass("ui-state-focus")
      });
      this.handles.each(function(g) {
        d(this).data("index.ui-slider-handle", g)
      });
      this.handles.keydown(function(g) {
        var k = true,
        l = d(this).data("index.ui-slider-handle"),
        i,
        h,
        m;
        if (!a.options.disabled) {
          switch (g.keyCode) {
          case d.ui.keyCode.HOME:
          case d.ui.keyCode.END:
          case d.ui.keyCode.PAGE_UP:
          case d.ui.keyCode.PAGE_DOWN:
          case d.ui.keyCode.UP:
          case d.ui.keyCode.RIGHT:
          case d.ui.keyCode.DOWN:
          case d.ui.keyCode.LEFT:
            k = false;
            if (!a._keySliding) {
              a._keySliding = true;
              d(this).addClass("ui-state-active");
              i = a._start(g, l);
              if (i === false) return
            }
            break
          }
          m = a.options.step;
          i = a.options.values && a.options.values.length ? (h = a.values(l)) : (h = a.value());
          switch (g.keyCode) {
          case d.ui.keyCode.HOME:
            h = a._valueMin();
            break;
          case d.ui.keyCode.END:
            h = a._valueMax();
            break;
          case d.ui.keyCode.PAGE_UP:
            h = a._trimAlignValue(i + (a._valueMax() - a._valueMin()) / 5);
            break;
          case d.ui.keyCode.PAGE_DOWN:
            h = a._trimAlignValue(i - (a._valueMax() - a._valueMin()) / 5);
            break;
          case d.ui.keyCode.UP:
          case d.ui.keyCode.RIGHT:
            if (i === a._valueMax()) return;
            h = a._trimAlignValue(i + m);
            break;
          case d.ui.keyCode.DOWN:
          case d.ui.keyCode.LEFT:
            if (i === a._valueMin()) return;
            h = a._trimAlignValue(i - m);
            break
          }
          a._slide(g, l, h);
          return k
        }
      }).keyup(function(g) {
        var k = d(this).data("index.ui-slider-handle");
        if (a._keySliding) {
          a._keySliding = false;
          a._stop(g, k);
          a._change(g, k);
          d(this).removeClass("ui-state-active")
        }
      });
      this._refreshValue();
      this._animateOff = false
    },
    destroy: function() {
      this.handles.remove();
      this.range.remove();
      this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");
      this._mouseDestroy();
      return this
    },
    _mouseCapture: function(a) {
      var b = this.options,
      c, f, e, j, g;
      if (b.disabled) return false;
      this.elementSize = {
        width: this.element.outerWidth(),
        height: this.element.outerHeight()
      };
      this.elementOffset = this.element.offset();
      c = this._normValueFromMouse({
        x: a.pageX,
        y: a.pageY
      });
      f = this._valueMax() - this._valueMin() + 1;
      j = this;
      this.handles.each(function(k) {
        var l = Math.abs(c - j.values(k));
        if (f > l) {
          f = l;
          e = d(this);
          g = k
        }
      });
      if (b.range === true && this.values(1) === b.min) {
        g += 1;
        e = d(this.handles[g])
      }
      if (this._start(a, g) === false) return false;
      this._mouseSliding = true;
      j._handleIndex = g;
      e.addClass("ui-state-active").focus();
      b = e.offset();
      this._clickOffset = !d(a.target).parents().andSelf().is(".ui-slider-handle") ? {
        left: 0,
        top: 0
      }: {
        left: a.pageX - b.left - e.width() / 2,
        top: a.pageY - b.top - e.height() / 2 - (parseInt(e.css("borderTopWidth"), 10) || 0) - (parseInt(e.css("borderBottomWidth"), 10) || 0) + (parseInt(e.css("marginTop"), 10) || 0)
      };
      this.handles.hasClass("ui-state-hover") || this._slide(a, g, c);
      return this._animateOff = true
    },
    _mouseStart: function() {
      return true
    },
    _mouseDrag: function(a) {
      var b = this._normValueFromMouse({
        x: a.pageX,
        y: a.pageY
      });
      this._slide(a, this._handleIndex, b);
      return false
    },
    _mouseStop: function(a) {
      this.handles.removeClass("ui-state-active");
      this._mouseSliding = false;
      this._stop(a, this._handleIndex);
      this._change(a, this._handleIndex);
      this._clickOffset = this._handleIndex = null;
      return this._animateOff = false
    },
    _detectOrientation: function() {
      this.orientation = this.options.orientation === "vertical" ? "vertical": "horizontal"
    },
    _normValueFromMouse: function(a) {
      var b;
      if (this.orientation === "horizontal") {
        b = this.elementSize.width;
        a = a.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left: 0)
      } else {
        b = this.elementSize.height;
        a = a.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top: 0)
      }
      b = a / b;
      if (b > 1) b = 1;
      if (b < 0) b = 0;
      if (this.orientation === "vertical") b = 1 - b;
      a = this._valueMax() - this._valueMin();
      return this._trimAlignValue(this._valueMin() + b * a)
    },
    _start: function(a, b) {
      var c = {
        handle: this.handles[b],
        value: this.value()
      };
      if (this.options.values && this.options.values.length) {
        c.value = this.values(b);
        c.values = this.values()
      }
      return this._trigger("start", a, c)
    },
    _slide: function(a, b, c) {
      var f;
      if (this.options.values && this.options.values.length) {
        f = this.values(b ? 0 : 1);
        if (this.options.values.length === 2 && this.options.range === true && (b === 0 && c > f || b === 1 && c < f)) c = f;
        if (c !== this.values(b)) {
          f = this.values();
          f[b] = c;
          a = this._trigger("slide", a, {
            handle: this.handles[b],
            value: c,
            values: f
          });
          this.values(b ? 0 : 1);
          a !== false && this.values(b, c, true)
        }
      } else if (c !== this.value()) {
        a = this._trigger("slide", a, {
          handle: this.handles[b],
          value: c
        });
        a !== false && this.value(c)
      }
    },
    _stop: function(a, b) {
      var c = {
        handle: this.handles[b],
        value: this.value()
      };
      if (this.options.values && this.options.values.length) {
        c.value = this.values(b);
        c.values = this.values()
      }
      this._trigger("stop", a, c)
    },
    _change: function(a, b) {
      if (!this._keySliding && !this._mouseSliding) {
        var c = {
          handle: this.handles[b],
          value: this.value()
        };
        if (this.options.values && this.options.values.length) {
          c.value = this.values(b);
          c.values = this.values()
        }
        this._trigger("change", a, c)
      }
    },
    value: function(a) {
      if (arguments.length) {
        this.options.value = this._trimAlignValue(a);
        this._refreshValue();
        this._change(null, 0)
      } else return this._value()
    },
    values: function(a, b) {
      var c, f, e;
      if (arguments.length > 1) {
        this.options.values[a] = this._trimAlignValue(b);
        this._refreshValue();
        this._change(null, a)
      } else if (arguments.length) if (d.isArray(arguments[0])) {
        c = this.options.values;
        f = arguments[0];
        for (e = 0; e < c.length; e += 1) {
          c[e] = this._trimAlignValue(f[e]);
          this._change(null, e)
        }
        this._refreshValue()
      } else return this.options.values && this.options.values.length ? this._values(a) : this.value();
      else return this._values()
    },
    _setOption: function(a, b) {
      var c, f = 0;
      if (d.isArray(this.options.values)) f = this.options.values.length;
      d.Widget.prototype._setOption.apply(this, arguments);
      switch (a) {
      case "disabled":
        if (b) {
          this.handles.filter(".ui-state-focus").blur();
          this.handles.removeClass("ui-state-hover");
          this.handles.propAttr("disabled", true);
          this.element.addClass("ui-disabled")
        } else {
          this.handles.propAttr("disabled", false);
          this.element.removeClass("ui-disabled")
        }
        break;
      case "orientation":
        this._detectOrientation();
        this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-" + this.orientation);
        this._refreshValue();
        break;
      case "value":
        this._animateOff = true;
        this._refreshValue();
        this._change(null, 0);
        this._animateOff = false;
        break;
      case "values":
        this._animateOff = true;
        this._refreshValue();
        for (c = 0; c < f; c += 1) this._change(null, c);
        this._animateOff = false;
        break
      }
    },
    _value: function() {
      var a = this.options.value;
      return a = this._trimAlignValue(a)
    },
    _values: function(a) {
      var b, c;
      if (arguments.length) {
        b = this.options.values[a];
        return b = this._trimAlignValue(b)
      } else {
        b = this.options.values.slice();
        for (c = 0; c < b.length; c += 1) b[c] = this._trimAlignValue(b[c]);
        return b
      }
    },
    _trimAlignValue: function(a) {
      if (a <= this._valueMin()) return this._valueMin();
      if (a >= this._valueMax()) return this._valueMax();
      var b = this.options.step > 0 ? this.options.step: 1,
      c = (a - this._valueMin()) % b;
      a = a - c;
      if (Math.abs(c) * 2 >= b) a += c > 0 ? b: -b;
      return parseFloat(a.toFixed(5))
    },
    _valueMin: function() {
      return this.options.min
    },
    _valueMax: function() {
      return this.options.max
    },
    _refreshValue: function() {
      var a = this.options.range,
      b = this.options,
      c = this,
      f = !this._animateOff ? b.animate: false,
      e,
      j = {},
      g,
      k,
      l,
      i;
      if (this.options.values && this.options.values.length) this.handles.each(function(h) {
        e = (c.values(h) - c._valueMin()) / (c._valueMax() - c._valueMin()) * 100;
        j[c.orientation === "horizontal" ? "left": "bottom"] = e + "%";
        d(this).stop(1, 1)[f ? "animate": "css"](j, b.animate);
        if (c.options.range === true) if (c.orientation === "horizontal") {
          if (h === 0) c.range.stop(1, 1)[f ? "animate": "css"]({
            left: e + "%"
          },
          b.animate);
          if (h === 1) c.range[f ? "animate": "css"]({
            width: e - g + "%"
          },
          {
            queue: false,
            duration: b.animate
          })
        } else {
          if (h === 0) c.range.stop(1, 1)[f ? "animate": "css"]({
            bottom: e + "%"
          },
          b.animate);
          if (h === 1) c.range[f ? "animate": "css"]({
            height: e - g + "%"
          },
          {
            queue: false,
            duration: b.animate
          })
        }
        g = e
      });
      else {
        k = this.value();
        l = this._valueMin();
        i = this._valueMax();
        e = i !== l ? (k - l) / (i - l) * 100 : 0;
        j[c.orientation === "horizontal" ? "left": "bottom"] = e + "%";
        this.handle.stop(1, 1)[f ? "animate": "css"](j, b.animate);
        if (a === "min" && this.orientation === "horizontal") this.range.stop(1, 1)[f ? "animate": "css"]({
          width: e + "%"
        },
        b.animate);
        if (a === "max" && this.orientation === "horizontal") this.range[f ? "animate": "css"]({
          width: 100 - e + "%"
        },
        {
          queue: false,
          duration: b.animate
        });
        if (a === "min" && this.orientation === "vertical") this.range.stop(1, 1)[f ? "animate": "css"]({
          height: e + "%"
        },
        b.animate);
        if (a === "max" && this.orientation === "vertical") this.range[f ? "animate": "css"]({
          height: 100 - e + "%"
        },
        {
          queue: false,
          duration: b.animate
        })
      }
    }
  });
  d.extend(d.ui.slider, {
    version: "1.8.16"
  })
})(jQuery);; (function(d, p) {
  function u() {
    return++v
  }
  function w() {
    return++x
  }
  var v = 0,
  x = 0;
  d.widget("ui.tabs", {
    options: {
      add: null,
      ajaxOptions: null,
      cache: false,
      cookie: null,
      collapsible: false,
      disable: null,
      disabled: [],
      enable: null,
      event: "click",
      fx: null,
      idPrefix: "ui-tabs-",
      load: null,
      panelTemplate: "<div></div>",
      remove: null,
      select: null,
      show: null,
      spinner: "<em>Loading&#8230;</em>",
      tabTemplate: "<li><a href='#{href}'><span>#{label}</span></a></li>"
    },
    _create: function() {
      this._tabify(true)
    },
    _setOption: function(b, e) {
      if (b == "selected") this.options.collapsible && e == this.options.selected || this.select(e);
      else {
        this.options[b] = e;
        this._tabify()
      }
    },
    _tabId: function(b) {
      return b.title && b.title.replace(/\s/g, "_").replace(/[^\w\u00c0-\uFFFF-]/g, "") || this.options.idPrefix + u()
    },
    _sanitizeSelector: function(b) {
      return b.replace(/:/g, "\\:")
    },
    _cookie: function() {
      var b = this.cookie || (this.cookie = this.options.cookie.name || "ui-tabs-" + w());
      return d.cookie.apply(null, [b].concat(d.makeArray(arguments)))
    },
    _ui: function(b, e) {
      return {
        tab: b,
        panel: e,
        index: this.anchors.index(b)
      }
    },
    _cleanup: function() {
      this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function() {
        var b = d(this);
        b.html(b.data("label.tabs")).removeData("label.tabs")
      })
    },
    _tabify: function(b) {
      function e(g, f) {
        g.css("display", ""); ! d.support.opacity && f.opacity && g[0].style.removeAttribute("filter")
      }
      var a = this,
      c = this.options,
      h = /^#.+/;
      this.list = this.element.find("ol,ul").eq(0);
      this.lis = d(" > li:has(a[href])", this.list);
      this.anchors = this.lis.map(function() {
        return d("a", this)[0]
      });
      this.panels = d([]);
      this.anchors.each(function(g, f) {
        var i = d(f).attr("href"),
        l = i.split("#")[0],
        q;
        if (l && (l === location.toString().split("#")[0] || (q = d("base")[0]) && l === q.href)) {
          i = f.hash;
          f.href = i
        }
        if (h.test(i)) a.panels = a.panels.add(a.element.find(a._sanitizeSelector(i)));
        else if (i && i !== "#") {
          d.data(f, "href.tabs", i);
          d.data(f, "load.tabs", i.replace(/#.*$/, ""));
          i = a._tabId(f);
          f.href = "#" + i;
          f = a.element.find("#" + i);
          if (!f.length) {
            f = d(c.panelTemplate).attr("id", i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g - 1] || a.list);
            f.data("destroy.tabs", true)
          }
          a.panels = a.panels.add(f)
        } else c.disabled.push(g)
      });
      if (b) {
        this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all");
        this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");
        this.lis.addClass("ui-state-default ui-corner-top");
        this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");
        if (c.selected === p) {
          location.hash && this.anchors.each(function(g, f) {
            if (f.hash == location.hash) {
              c.selected = g;
              return false
            }
          });
          if (typeof c.selected !== "number" && c.cookie) c.selected = parseInt(a._cookie(), 10);
          if (typeof c.selected !== "number" && this.lis.filter(".ui-tabs-selected").length) c.selected = this.lis.index(this.lis.filter(".ui-tabs-selected"));
          c.selected = c.selected || (this.lis.length ? 0 : -1)
        } else if (c.selected === null) c.selected = -1;
        c.selected = c.selected >= 0 && this.anchors[c.selected] || c.selected < 0 ? c.selected: 0;
        c.disabled = d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),
        function(g) {
          return a.lis.index(g)
        }))).sort();
        d.inArray(c.selected, c.disabled) != -1 && c.disabled.splice(d.inArray(c.selected, c.disabled), 1);
        this.panels.addClass("ui-tabs-hide");
        this.lis.removeClass("ui-tabs-selected ui-state-active");
        if (c.selected >= 0 && this.anchors.length) {
          a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");
          this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");
          a.element.queue("tabs",
          function() {
            a._trigger("show", null, a._ui(a.anchors[c.selected], a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))
          });
          this.load(c.selected)
        }
        d(window).bind("unload",
        function() {
          a.lis.add(a.anchors).unbind(".tabs");
          a.lis = a.anchors = a.panels = null
        })
      } else c.selected = this.lis.index(this.lis.filter(".ui-tabs-selected"));
      this.element[c.collapsible ? "addClass": "removeClass"]("ui-tabs-collapsible");
      c.cookie && this._cookie(c.selected, c.cookie);
      b = 0;
      for (var j; j = this.lis[b]; b++) d(j)[d.inArray(b, c.disabled) != -1 && !d(j).hasClass("ui-tabs-selected") ? "addClass": "removeClass"]("ui-state-disabled");
      c.cache === false && this.anchors.removeData("cache.tabs");
      this.lis.add(this.anchors).unbind(".tabs");
      if (c.event !== "mouseover") {
        var k = function(g, f) {
          f.is(":not(.ui-state-disabled)") && f.addClass("ui-state-" + g)
        },
        n = function(g, f) {
          f.removeClass("ui-state-" + g)
        };
        this.lis.bind("mouseover.tabs",
        function() {
          k("hover", d(this))
        });
        this.lis.bind("mouseout.tabs",
        function() {
          n("hover", d(this))
        });
        this.anchors.bind("focus.tabs",
        function() {
          k("focus", d(this).closest("li"))
        });
        this.anchors.bind("blur.tabs",
        function() {
          n("focus", d(this).closest("li"))
        })
      }
      var m, o;
      if (c.fx) if (d.isArray(c.fx)) {
        m = c.fx[0];
        o = c.fx[1]
      } else m = o = c.fx;
      var r = o ?
      function(g, f) {
        d(g).closest("li").addClass("ui-tabs-selected ui-state-active");
        f.hide().removeClass("ui-tabs-hide").animate(o, o.duration || "normal",
        function() {
          e(f, o);
          a._trigger("show", null, a._ui(g, f[0]))
        })
      }: function(g, f) {
        d(g).closest("li").addClass("ui-tabs-selected ui-state-active");
        f.removeClass("ui-tabs-hide");
        a._trigger("show", null, a._ui(g, f[0]))
      },
      s = m ?
      function(g, f) {
        f.animate(m, m.duration || "normal",
        function() {
          a.lis.removeClass("ui-tabs-selected ui-state-active");
          f.addClass("ui-tabs-hide");
          e(f, m);
          a.element.dequeue("tabs")
        })
      }: function(g, f) {
        a.lis.removeClass("ui-tabs-selected ui-state-active");
        f.addClass("ui-tabs-hide");
        a.element.dequeue("tabs")
      };
      this.anchors.bind(c.event + ".tabs",
      function() {
        var g = this,
        f = d(g).closest("li"),
        i = a.panels.filter(":not(.ui-tabs-hide)"),
        l = a.element.find(a._sanitizeSelector(g.hash));
        if (f.hasClass("ui-tabs-selected") && !c.collapsible || f.hasClass("ui-state-disabled") || f.hasClass("ui-state-processing") || a.panels.filter(":animated").length || a._trigger("select", null, a._ui(this, l[0])) === false) {
          this.blur();
          return false
        }
        c.selected = a.anchors.index(this);
        a.abort();
        if (c.collapsible) if (f.hasClass("ui-tabs-selected")) {
          c.selected = -1;
          c.cookie && a._cookie(c.selected, c.cookie);
          a.element.queue("tabs",
          function() {
            s(g, i)
          }).dequeue("tabs");
          this.blur();
          return false
        } else if (!i.length) {
          c.cookie && a._cookie(c.selected, c.cookie);
          a.element.queue("tabs",
          function() {
            r(g, l)
          });
          a.load(a.anchors.index(this));
          this.blur();
          return false
        }
        c.cookie && a._cookie(c.selected, c.cookie);
        if (l.length) {
          i.length && a.element.queue("tabs",
          function() {
            s(g, i)
          });
          a.element.queue("tabs",
          function() {
            r(g, l)
          });
          a.load(a.anchors.index(this))
        } else throw "jQuery UI Tabs: Mismatching fragment identifier.";
        d.browser.msie && this.blur()
      });
      this.anchors.bind("click.tabs",
      function() {
        return false
      })
    },
    _getIndex: function(b) {
      if (typeof b == "string") b = this.anchors.index(this.anchors.filter("[href$=" + b + "]"));
      return b
    },
    destroy: function() {
      var b = this.options;
      this.abort();
      this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");
      this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");
      this.anchors.each(function() {
        var e = d.data(this, "href.tabs");
        if (e) this.href = e;
        var a = d(this).unbind(".tabs");
        d.each(["href", "load", "cache"],
        function(c, h) {
          a.removeData(h + ".tabs")
        })
      });
      this.lis.unbind(".tabs").add(this.panels).each(function() {
        d.data(this, "destroy.tabs") ? d(this).remove() : d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")
      });
      b.cookie && this._cookie(null, b.cookie);
      return this
    },
    add: function(b, e, a) {
      if (a === p) a = this.anchors.length;
      var c = this,
      h = this.options;
      e = d(h.tabTemplate.replace(/#\{href\}/g, b).replace(/#\{label\}/g, e));
      b = !b.indexOf("#") ? b.replace("#", "") : this._tabId(d("a", e)[0]);
      e.addClass("ui-state-default ui-corner-top").data("destroy.tabs", true);
      var j = c.element.find("#" + b);
      j.length || (j = d(h.panelTemplate).attr("id", b).data("destroy.tabs", true));
      j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");
      if (a >= this.lis.length) {
        e.appendTo(this.list);
        j.appendTo(this.list[0].parentNode)
      } else {
        e.insertBefore(this.lis[a]);
        j.insertBefore(this.panels[a])
      }
      h.disabled = d.map(h.disabled,
      function(k) {
        return k >= a ? ++k: k
      });
      this._tabify();
      if (this.anchors.length == 1) {
        h.selected = 0;
        e.addClass("ui-tabs-selected ui-state-active");
        j.removeClass("ui-tabs-hide");
        this.element.queue("tabs",
        function() {
          c._trigger("show", null, c._ui(c.anchors[0], c.panels[0]))
        });
        this.load(0)
      }
      this._trigger("add", null, this._ui(this.anchors[a], this.panels[a]));
      return this
    },
    remove: function(b) {
      b = this._getIndex(b);
      var e = this.options,
      a = this.lis.eq(b).remove(),
      c = this.panels.eq(b).remove();
      if (a.hasClass("ui-tabs-selected") && this.anchors.length > 1) this.select(b + (b + 1 < this.anchors.length ? 1 : -1));
      e.disabled = d.map(d.grep(e.disabled,
      function(h) {
        return h != b
      }),
      function(h) {
        return h >= b ? --h: h
      });
      this._tabify();
      this._trigger("remove", null, this._ui(a.find("a")[0], c[0]));
      return this
    },
    enable: function(b) {
      b = this._getIndex(b);
      var e = this.options;
      if (d.inArray(b, e.disabled) != -1) {
        this.lis.eq(b).removeClass("ui-state-disabled");
        e.disabled = d.grep(e.disabled,
        function(a) {
          return a != b
        });
        this._trigger("enable", null, this._ui(this.anchors[b], this.panels[b]));
        return this
      }
    },
    disable: function(b) {
      b = this._getIndex(b);
      var e = this.options;
      if (b != e.selected) {
        this.lis.eq(b).addClass("ui-state-disabled");
        e.disabled.push(b);
        e.disabled.sort();
        this._trigger("disable", null, this._ui(this.anchors[b], this.panels[b]))
      }
      return this
    },
    select: function(b) {
      b = this._getIndex(b);
      if (b == -1) if (this.options.collapsible && this.options.selected != -1) b = this.options.selected;
      else return this;
      this.anchors.eq(b).trigger(this.options.event + ".tabs");
      return this
    },
    load: function(b) {
      b = this._getIndex(b);
      var e = this,
      a = this.options,
      c = this.anchors.eq(b)[0],
      h = d.data(c, "load.tabs");
      this.abort();
      if (!h || this.element.queue("tabs").length !== 0 && d.data(c, "cache.tabs")) this.element.dequeue("tabs");
      else {
        this.lis.eq(b).addClass("ui-state-processing");
        if (a.spinner) {
          var j = d("span", c);
          j.data("label.tabs", j.html()).html(a.spinner)
        }
        this.xhr = d.ajax(d.extend({},
        a.ajaxOptions, {
          url: h,
          success: function(k, n) {
            e.element.find(e._sanitizeSelector(c.hash)).html(k);
            e._cleanup();
            a.cache && d.data(c, "cache.tabs", true);
            e._trigger("load", null, e._ui(e.anchors[b], e.panels[b]));
            try {
              a.ajaxOptions.success(k, n)
            } catch(m) {}
          },
          error: function(k, n) {
            e._cleanup();
            e._trigger("load", null, e._ui(e.anchors[b], e.panels[b]));
            try {
              a.ajaxOptions.error(k, n, b, c)
            } catch(m) {}
          }
        }));
        e.element.dequeue("tabs");
        return this
      }
    },
    abort: function() {
      this.element.queue([]);
      this.panels.stop(false, true);
      this.element.queue("tabs", this.element.queue("tabs").splice( - 2, 2));
      if (this.xhr) {
        this.xhr.abort();
        delete this.xhr
      }
      this._cleanup();
      return this
    },
    url: function(b, e) {
      this.anchors.eq(b).removeData("cache.tabs").data("load.tabs", e);
      return this
    },
    length: function() {
      return this.anchors.length
    }
  });
  d.extend(d.ui.tabs, {
    version: "1.8.16"
  });
  d.extend(d.ui.tabs.prototype, {
    rotation: null,
    rotate: function(b, e) {
      var a = this,
      c = this.options,
      h = a._rotate || (a._rotate = function(j) {
        clearTimeout(a.rotation);
        a.rotation = setTimeout(function() {
          var k = c.selected;
          a.select(++k < a.anchors.length ? k: 0)
        },
        b);
        j && j.stopPropagation()
      });
      e = a._unrotate || (a._unrotate = !e ?
      function(j) {
        j.clientX && a.rotate(null)
      }: function() {
        t = c.selected;
        h()
      });
      if (b) {
        this.element.bind("tabsshow", h);
        this.anchors.bind(c.event + ".tabs", e);
        h()
      } else {
        clearTimeout(a.rotation);
        this.element.unbind("tabsshow", h);
        this.anchors.unbind(c.event + ".tabs", e);
        delete this._rotate;
        delete this._unrotate
      }
      return this
    }
  })
})(jQuery);; (function(d, C) {
  function M() {
    this.debug = false;
    this._curInst = null;
    this._keyEvent = false;
    this._disabledInputs = [];
    this._inDialog = this._datepickerShowing = false;
    this._mainDivId = "ui-datepicker-div";
    this._inlineClass = "ui-datepicker-inline";
    this._appendClass = "ui-datepicker-append";
    this._triggerClass = "ui-datepicker-trigger";
    this._dialogClass = "ui-datepicker-dialog";
    this._disableClass = "ui-datepicker-disabled";
    this._unselectableClass = "ui-datepicker-unselectable";
    this._currentClass = "ui-datepicker-current-day";
    this._dayOverClass = "ui-datepicker-days-cell-over";
    this.regional = [];
    this.regional[""] = {
      closeText: "Done",
      prevText: "Prev",
      nextText: "Next",
      currentText: "Today",
      monthNames: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
      monthNamesShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
      dayNames: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
      dayNamesShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
      dayNamesMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
      weekHeader: "Wk",
      dateFormat: "mm/dd/yy",
      firstDay: 0,
      isRTL: false,
      showMonthAfterYear: false,
      yearSuffix: ""
    };
    this._defaults = {
      showOn: "focus",
      showAnim: "fadeIn",
      showOptions: {},
      defaultDate: null,
      appendText: "",
      buttonText: "...",
      buttonImage: "",
      buttonImageOnly: false,
      hideIfNoPrevNext: false,
      navigationAsDateFormat: false,
      gotoCurrent: false,
      changeMonth: false,
      changeYear: false,
      yearRange: "c-10:c+10",
      showOtherMonths: false,
      selectOtherMonths: false,
      showWeek: false,
      calculateWeek: this.iso8601Week,
      shortYearCutoff: "+10",
      minDate: null,
      maxDate: null,
      duration: "fast",
      beforeShowDay: null,
      beforeShow: null,
      onSelect: null,
      onChangeMonthYear: null,
      onClose: null,
      numberOfMonths: 1,
      showCurrentAtPos: 0,
      stepMonths: 1,
      stepBigMonths: 12,
      altField: "",
      altFormat: "",
      constrainInput: true,
      showButtonPanel: false,
      autoSize: false,
      disabled: false
    };
    d.extend(this._defaults, this.regional[""]);
    this.dpDiv = N(d('<div id="' + this._mainDivId + '" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))
  }
  function N(a) {
    return a.bind("mouseout",
    function(b) {
      b = d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");
      b.length && b.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")
    }).bind("mouseover",
    function(b) {
      b = d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");
      if (! (d.datepicker._isDisabledDatepicker(J.inline ? a.parent()[0] : J.input[0]) || !b.length)) {
        b.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
        b.addClass("ui-state-hover");
        b.hasClass("ui-datepicker-prev") && b.addClass("ui-datepicker-prev-hover");
        b.hasClass("ui-datepicker-next") && b.addClass("ui-datepicker-next-hover")
      }
    })
  }
  function H(a, b) {
    d.extend(a, b);
    for (var c in b) if (b[c] == null || b[c] == C) a[c] = b[c];
    return a
  }
  d.extend(d.ui, {
    datepicker: {
      version: "1.8.16"
    }
  });
  var B = (new Date).getTime(),
  J;
  d.extend(M.prototype, {
    markerClassName: "hasDatepicker",
    maxRows: 4,
    log: function() {
      this.debug && console.log.apply("", arguments)
    },
    _widgetDatepicker: function() {
      return this.dpDiv
    },
    setDefaults: function(a) {
      H(this._defaults, a || {});
      return this
    },
    _attachDatepicker: function(a, b) {
      var c = null;
      for (var e in this._defaults) {
        var f = a.getAttribute("date:" + e);
        if (f) {
          c = c || {};
          try {
            c[e] = eval(f)
          } catch(h) {
            c[e] = f
          }
        }
      }
      e = a.nodeName.toLowerCase();
      f = e == "div" || e == "span";
      if (!a.id) {
        this.uuid += 1;
        a.id = "dp" + this.uuid
      }
      var i = this._newInst(d(a), f);
      i.settings = d.extend({},
      b || {},
      c || {});
      if (e == "input") this._connectDatepicker(a, i);
      else f && this._inlineDatepicker(a, i)
    },
    _newInst: function(a, b) {
      return {
        id: a[0].id.replace(/([^A-Za-z0-9_-])/g, "\\\\$1"),
        input: a,
        selectedDay: 0,
        selectedMonth: 0,
        selectedYear: 0,
        drawMonth: 0,
        drawYear: 0,
        inline: b,
        dpDiv: !b ? this.dpDiv: N(d('<div class="' + this._inlineClass + ' ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all"></div>'))
      }
    },
    _connectDatepicker: function(a, b) {
      var c = d(a);
      b.append = d([]);
      b.trigger = d([]);
      if (!c.hasClass(this.markerClassName)) {
        this._attachments(c, b);
        c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",
        function(e, f, h) {
          b.settings[f] = h
        }).bind("getData.datepicker",
        function(e, f) {
          return this._get(b, f)
        });
        this._autoSize(b);
        d.data(a, "datepicker", b);
        b.settings.disabled && this._disableDatepicker(a)
      }
    },
    _attachments: function(a, b) {
      var c = this._get(b, "appendText"),
      e = this._get(b, "isRTL");
      b.append && b.append.remove();
      if (c) {
        b.append = d('<span class="' + this._appendClass + '">' + c + "</span>");
        a[e ? "before": "after"](b.append)
      }
      a.unbind("focus", this._showDatepicker);
      b.trigger && b.trigger.remove();
      c = this._get(b, "showOn");
      if (c == "focus" || c == "both") a.focus(this._showDatepicker);
      if (c == "button" || c == "both") {
        c = this._get(b, "buttonText");
        var f = this._get(b, "buttonImage");
        b.trigger = d(this._get(b, "buttonImageOnly") ? d("<img/>").addClass(this._triggerClass).attr({
          src: f,
          alt: c,
          title: c
        }) : d('<button type="button"></button>').addClass(this._triggerClass).html(f == "" ? c: d("<img/>").attr({
          src: f,
          alt: c,
          title: c
        })));
        a[e ? "before": "after"](b.trigger);
        b.trigger.click(function() {
          d.datepicker._datepickerShowing && d.datepicker._lastInput == a[0] ? d.datepicker._hideDatepicker() : d.datepicker._showDatepicker(a[0]);
          return false
        })
      }
    },
    _autoSize: function(a) {
      if (this._get(a, "autoSize") && !a.inline) {
        var b = new Date(2009, 11, 20),
        c = this._get(a, "dateFormat");
        if (c.match(/[DM]/)) {
          var e = function(f) {
            for (var h = 0,
            i = 0,
            g = 0; g < f.length; g++) if (f[g].length > h) {
              h = f[g].length;
              i = g
            }
            return i
          };
          b.setMonth(e(this._get(a, c.match(/MM/) ? "monthNames": "monthNamesShort")));
          b.setDate(e(this._get(a, c.match(/DD/) ? "dayNames": "dayNamesShort")) + 20 - b.getDay())
        }
        a.input.attr("size", this._formatDate(a, b).length)
      }
    },
    _inlineDatepicker: function(a, b) {
      var c = d(a);
      if (!c.hasClass(this.markerClassName)) {
        c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",
        function(e, f, h) {
          b.settings[f] = h
        }).bind("getData.datepicker",
        function(e, f) {
          return this._get(b, f)
        });
        d.data(a, "datepicker", b);
        this._setDate(b, this._getDefaultDate(b), true);
        this._updateDatepicker(b);
        this._updateAlternate(b);
        b.settings.disabled && this._disableDatepicker(a);
        b.dpDiv.css("display", "block")
      }
    },
    _dialogDatepicker: function(a, b, c, e, f) {
      a = this._dialogInst;
      if (!a) {
        this.uuid += 1;
        this._dialogInput = d('<input type="text" id="' + ("dp" + this.uuid) + '" style="position: absolute; top: -100px; width: 0px; z-index: -10;"/>');
        this._dialogInput.keydown(this._doKeyDown);
        d("body").append(this._dialogInput);
        a = this._dialogInst = this._newInst(this._dialogInput, false);
        a.settings = {};
        d.data(this._dialogInput[0], "datepicker", a)
      }
      H(a.settings, e || {});
      b = b && b.constructor == Date ? this._formatDate(a, b) : b;
      this._dialogInput.val(b);
      this._pos = f ? f.length ? f: [f.pageX, f.pageY] : null;
      if (!this._pos) this._pos = [document.documentElement.clientWidth / 2 - 100 + (document.documentElement.scrollLeft || document.body.scrollLeft), document.documentElement.clientHeight / 2 - 150 + (document.documentElement.scrollTop || document.body.scrollTop)];
      this._dialogInput.css("left", this._pos[0] + 20 + "px").css("top", this._pos[1] + "px");
      a.settings.onSelect = c;
      this._inDialog = true;
      this.dpDiv.addClass(this._dialogClass);
      this._showDatepicker(this._dialogInput[0]);
      d.blockUI && d.blockUI(this.dpDiv);
      d.data(this._dialogInput[0], "datepicker", a);
      return this
    },
    _destroyDatepicker: function(a) {
      var b = d(a),
      c = d.data(a, "datepicker");
      if (b.hasClass(this.markerClassName)) {
        var e = a.nodeName.toLowerCase();
        d.removeData(a, "datepicker");
        if (e == "input") {
          c.append.remove();
          c.trigger.remove();
          b.removeClass(this.markerClassName).unbind("focus", this._showDatepicker).unbind("keydown", this._doKeyDown).unbind("keypress", this._doKeyPress).unbind("keyup", this._doKeyUp)
        } else if (e == "div" || e == "span") b.removeClass(this.markerClassName).empty()
      }
    },
    _enableDatepicker: function(a) {
      var b = d(a),
      c = d.data(a, "datepicker");
      if (b.hasClass(this.markerClassName)) {
        var e = a.nodeName.toLowerCase();
        if (e == "input") {
          a.disabled = false;
          c.trigger.filter("button").each(function() {
            this.disabled = false
          }).end().filter("img").css({
            opacity: "1.0",
            cursor: ""
          })
        } else if (e == "div" || e == "span") {
          b = b.children("." + this._inlineClass);
          b.children().removeClass("ui-state-disabled");
          b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")
        }
        this._disabledInputs = d.map(this._disabledInputs,
        function(f) {
          return f == a ? null: f
        })
      }
    },
    _disableDatepicker: function(a) {
      var b = d(a),
      c = d.data(a, "datepicker");
      if (b.hasClass(this.markerClassName)) {
        var e = a.nodeName.toLowerCase();
        if (e == "input") {
          a.disabled = true;
          c.trigger.filter("button").each(function() {
            this.disabled = true
          }).end().filter("img").css({
            opacity: "0.5",
            cursor: "default"
          })
        } else if (e == "div" || e == "span") {
          b = b.children("." + this._inlineClass);
          b.children().addClass("ui-state-disabled");
          b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled", "disabled")
        }
        this._disabledInputs = d.map(this._disabledInputs,
        function(f) {
          return f == a ? null: f
        });
        this._disabledInputs[this._disabledInputs.length] = a
      }
    },
    _isDisabledDatepicker: function(a) {
      if (!a) return false;
      for (var b = 0; b < this._disabledInputs.length; b++) if (this._disabledInputs[b] == a) return true;
      return false
    },
    _getInst: function(a) {
      try {
        return d.data(a, "datepicker")
      } catch(b) {
        throw "Missing instance data for this datepicker";
      }
    },
    _optionDatepicker: function(a, b, c) {
      var e = this._getInst(a);
      if (arguments.length == 2 && typeof b == "string") return b == "defaults" ? d.extend({},
      d.datepicker._defaults) : e ? b == "all" ? d.extend({},
      e.settings) : this._get(e, b) : null;
      var f = b || {};
      if (typeof b == "string") {
        f = {};
        f[b] = c
      }
      if (e) {
        this._curInst == e && this._hideDatepicker();
        var h = this._getDateDatepicker(a, true),
        i = this._getMinMaxDate(e, "min"),
        g = this._getMinMaxDate(e, "max");
        H(e.settings, f);
        if (i !== null && f.dateFormat !== C && f.minDate === C) e.settings.minDate = this._formatDate(e, i);
        if (g !== null && f.dateFormat !== C && f.maxDate === C) e.settings.maxDate = this._formatDate(e, g);
        this._attachments(d(a), e);
        this._autoSize(e);
        this._setDate(e, h);
        this._updateAlternate(e);
        this._updateDatepicker(e)
      }
    },
    _changeDatepicker: function(a, b, c) {
      this._optionDatepicker(a, b, c)
    },
    _refreshDatepicker: function(a) { (a = this._getInst(a)) && this._updateDatepicker(a)
    },
    _setDateDatepicker: function(a, b) {
      if (a = this._getInst(a)) {
        this._setDate(a, b);
        this._updateDatepicker(a);
        this._updateAlternate(a)
      }
    },
    _getDateDatepicker: function(a, b) { (a = this._getInst(a)) && !a.inline && this._setDateFromField(a, b);
      return a ? this._getDate(a) : null
    },
    _doKeyDown: function(a) {
      var b = d.datepicker._getInst(a.target),
      c = true,
      e = b.dpDiv.is(".ui-datepicker-rtl");
      b._keyEvent = true;
      if (d.datepicker._datepickerShowing) switch (a.keyCode) {
      case 9:
        d.datepicker._hideDatepicker();
        c = false;
        break;
      case 13:
        c = d("td." + d.datepicker._dayOverClass + ":not(." + d.datepicker._currentClass + ")", b.dpDiv);
        c[0] && d.datepicker._selectDay(a.target, b.selectedMonth, b.selectedYear, c[0]);
        if (a = d.datepicker._get(b, "onSelect")) {
          c = d.datepicker._formatDate(b);
          a.apply(b.input ? b.input[0] : null, [c, b])
        } else d.datepicker._hideDatepicker();
        return false;
      case 27:
        d.datepicker._hideDatepicker();
        break;
      case 33:
        d.datepicker._adjustDate(a.target, a.ctrlKey ? -d.datepicker._get(b, "stepBigMonths") : -d.datepicker._get(b, "stepMonths"), "M");
        break;
      case 34:
        d.datepicker._adjustDate(a.target, a.ctrlKey ? +d.datepicker._get(b, "stepBigMonths") : +d.datepicker._get(b, "stepMonths"), "M");
        break;
      case 35:
        if (a.ctrlKey || a.metaKey) d.datepicker._clearDate(a.target);
        c = a.ctrlKey || a.metaKey;
        break;
      case 36:
        if (a.ctrlKey || a.metaKey) d.datepicker._gotoToday(a.target);
        c = a.ctrlKey || a.metaKey;
        break;
      case 37:
        if (a.ctrlKey || a.metaKey) d.datepicker._adjustDate(a.target, e ? +1 : -1, "D");
        c = a.ctrlKey || a.metaKey;
        if (a.originalEvent.altKey) d.datepicker._adjustDate(a.target, a.ctrlKey ? -d.datepicker._get(b, "stepBigMonths") : -d.datepicker._get(b, "stepMonths"), "M");
        break;
      case 38:
        if (a.ctrlKey || a.metaKey) d.datepicker._adjustDate(a.target, -7, "D");
        c = a.ctrlKey || a.metaKey;
        break;
      case 39:
        if (a.ctrlKey || a.metaKey) d.datepicker._adjustDate(a.target, e ? -1 : +1, "D");
        c = a.ctrlKey || a.metaKey;
        if (a.originalEvent.altKey) d.datepicker._adjustDate(a.target, a.ctrlKey ? +d.datepicker._get(b, "stepBigMonths") : +d.datepicker._get(b, "stepMonths"), "M");
        break;
      case 40:
        if (a.ctrlKey || a.metaKey) d.datepicker._adjustDate(a.target, +7, "D");
        c = a.ctrlKey || a.metaKey;
        break;
      default:
        c = false
      } else if (a.keyCode == 36 && a.ctrlKey) d.datepicker._showDatepicker(this);
      else c = false;
      if (c) {
        a.preventDefault();
        a.stopPropagation()
      }
    },
    _doKeyPress: function(a) {
      var b = d.datepicker._getInst(a.target);
      if (d.datepicker._get(b, "constrainInput")) {
        b = d.datepicker._possibleChars(d.datepicker._get(b, "dateFormat"));
        var c = String.fromCharCode(a.charCode == C ? a.keyCode: a.charCode);
        return a.ctrlKey || a.metaKey || c < " " || !b || b.indexOf(c) > -1
      }
    },
    _doKeyUp: function(a) {
      a = d.datepicker._getInst(a.target);
      if (a.input.val() != a.lastVal) try {
        if (d.datepicker.parseDate(d.datepicker._get(a, "dateFormat"), a.input ? a.input.val() : null, d.datepicker._getFormatConfig(a))) {
          d.datepicker._setDateFromField(a);
          d.datepicker._updateAlternate(a);
          d.datepicker._updateDatepicker(a)
        }
      } catch(b) {
        d.datepicker.log(b)
      }
      return true
    },
    _showDatepicker: function(a) {
      a = a.target || a;
      if (a.nodeName.toLowerCase() != "input") a = d("input", a.parentNode)[0];
      if (! (d.datepicker._isDisabledDatepicker(a) || d.datepicker._lastInput == a)) {
        var b = d.datepicker._getInst(a);
        if (d.datepicker._curInst && d.datepicker._curInst != b) {
          d.datepicker._datepickerShowing && d.datepicker._triggerOnClose(d.datepicker._curInst);
          d.datepicker._curInst.dpDiv.stop(true, true)
        }
        var c = d.datepicker._get(b, "beforeShow");
        c = c ? c.apply(a, [a, b]) : {};
        if (c !== false) {
          H(b.settings, c);
          b.lastVal = null;
          d.datepicker._lastInput = a;
          d.datepicker._setDateFromField(b);
          if (d.datepicker._inDialog) a.value = "";
          if (!d.datepicker._pos) {
            d.datepicker._pos = d.datepicker._findPos(a);
            d.datepicker._pos[1] += a.offsetHeight
          }
          var e = false;
          d(a).parents().each(function() {
            e |= d(this).css("position") == "fixed";
            return ! e
          });
          if (e && d.browser.opera) {
            d.datepicker._pos[0] -= document.documentElement.scrollLeft;
            d.datepicker._pos[1] -= document.documentElement.scrollTop
          }
          c = {
            left: d.datepicker._pos[0],
            top: d.datepicker._pos[1]
          };
          d.datepicker._pos = null;
          b.dpDiv.empty();
          b.dpDiv.css({
            position: "absolute",
            display: "block",
            top: "-1000px"
          });
          d.datepicker._updateDatepicker(b);
          c = d.datepicker._checkOffset(b, c, e);
          b.dpDiv.css({
            position: d.datepicker._inDialog && d.blockUI ? "static": e ? "fixed": "absolute",
            display: "none",
            left: c.left + "px",
            top: c.top + "px"
          });
          if (!b.inline) {
            c = d.datepicker._get(b, "showAnim");
            var f = d.datepicker._get(b, "duration"),
            h = function() {
              var i = b.dpDiv.find("iframe.ui-datepicker-cover");
              if (i.length) {
                var g = d.datepicker._getBorders(b.dpDiv);
                i.css({
                  left: -g[0],
                  top: -g[1],
                  width: b.dpDiv.outerWidth(),
                  height: b.dpDiv.outerHeight()
                })
              }
            };
            b.dpDiv.zIndex(d(a).zIndex() + 1);
            d.datepicker._datepickerShowing = true;
            d.effects && d.effects[c] ? b.dpDiv.show(c, d.datepicker._get(b, "showOptions"), f, h) : b.dpDiv[c || "show"](c ? f: null, h);
            if (!c || !f) h();
            b.input.is(":visible") && !b.input.is(":disabled") && b.input.focus();
            d.datepicker._curInst = b
          }
        }
      }
    },
    _updateDatepicker: function(a) {
      this.maxRows = 4;
      var b = d.datepicker._getBorders(a.dpDiv);
      J = a;
      a.dpDiv.empty().append(this._generateHTML(a));
      var c = a.dpDiv.find("iframe.ui-datepicker-cover");
      c.length && c.css({
        left: -b[0],
        top: -b[1],
        width: a.dpDiv.outerWidth(),
        height: a.dpDiv.outerHeight()
      });
      a.dpDiv.find("." + this._dayOverClass + " a").mouseover();
      b = this._getNumberOfMonths(a);
      c = b[1];
      a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");
      c > 1 && a.dpDiv.addClass("ui-datepicker-multi-" + c).css("width", 17 * c + "em");
      a.dpDiv[(b[0] != 1 || b[1] != 1 ? "add": "remove") + "Class"]("ui-datepicker-multi");
      a.dpDiv[(this._get(a, "isRTL") ? "add": "remove") + "Class"]("ui-datepicker-rtl");
      a == d.datepicker._curInst && d.datepicker._datepickerShowing && a.input && a.input.is(":visible") && !a.input.is(":disabled") && a.input[0] != document.activeElement && a.input.focus();
      if (a.yearshtml) {
        var e = a.yearshtml;
        setTimeout(function() {
          e === a.yearshtml && a.yearshtml && a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);
          e = a.yearshtml = null
        },
        0)
      }
    },
    _getBorders: function(a) {
      var b = function(c) {
        return {
          thin: 1,
          medium: 2,
          thick: 3
        } [c] || c
      };
      return [parseFloat(b(a.css("border-left-width"))), parseFloat(b(a.css("border-top-width")))]
    },
    _checkOffset: function(a, b, c) {
      var e = a.dpDiv.outerWidth(),
      f = a.dpDiv.outerHeight(),
      h = a.input ? a.input.outerWidth() : 0,
      i = a.input ? a.input.outerHeight() : 0,
      g = document.documentElement.clientWidth + d(document).scrollLeft(),
      j = document.documentElement.clientHeight + d(document).scrollTop();
      b.left -= this._get(a, "isRTL") ? e - h: 0;
      b.left -= c && b.left == a.input.offset().left ? d(document).scrollLeft() : 0;
      b.top -= c && b.top == a.input.offset().top + i ? d(document).scrollTop() : 0;
      b.left -= Math.min(b.left, b.left + e > g && g > e ? Math.abs(b.left + e - g) : 0);
      b.top -= Math.min(b.top, b.top + f > j && j > f ? Math.abs(f + i) : 0);
      return b
    },
    _findPos: function(a) {
      for (var b = this._get(this._getInst(a), "isRTL"); a && (a.type == "hidden" || a.nodeType != 1 || d.expr.filters.hidden(a));) a = a[b ? "previousSibling": "nextSibling"];
      a = d(a).offset();
      return [a.left, a.top]
    },
    _triggerOnClose: function(a) {
      var b = this._get(a, "onClose");
      if (b) b.apply(a.input ? a.input[0] : null, [a.input ? a.input.val() : "", a])
    },
    _hideDatepicker: function(a) {
      var b = this._curInst;
      if (! (!b || a && b != d.data(a, "datepicker"))) if (this._datepickerShowing) {
        a = this._get(b, "showAnim");
        var c = this._get(b, "duration"),
        e = function() {
          d.datepicker._tidyDialog(b);
          this._curInst = null
        };
        d.effects && d.effects[a] ? b.dpDiv.hide(a, d.datepicker._get(b, "showOptions"), c, e) : b.dpDiv[a == "slideDown" ? "slideUp": a == "fadeIn" ? "fadeOut": "hide"](a ? c: null, e);
        a || e();
        d.datepicker._triggerOnClose(b);
        this._datepickerShowing = false;
        this._lastInput = null;
        if (this._inDialog) {
          this._dialogInput.css({
            position: "absolute",
            left: "0",
            top: "-100px"
          });
          if (d.blockUI) {
            d.unblockUI();
            d("body").append(this.dpDiv)
          }
        }
        this._inDialog = false
      }
    },
    _tidyDialog: function(a) {
      a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")
    },
    _checkExternalClick: function(a) {
      if (d.datepicker._curInst) {
        a = d(a.target);
        a[0].id != d.datepicker._mainDivId && a.parents("#" + d.datepicker._mainDivId).length == 0 && !a.hasClass(d.datepicker.markerClassName) && !a.hasClass(d.datepicker._triggerClass) && d.datepicker._datepickerShowing && !(d.datepicker._inDialog && d.blockUI) && d.datepicker._hideDatepicker()
      }
    },
    _adjustDate: function(a, b, c) {
      a = d(a);
      var e = this._getInst(a[0]);
      if (!this._isDisabledDatepicker(a[0])) {
        this._adjustInstDate(e, b + (c == "M" ? this._get(e, "showCurrentAtPos") : 0), c);
        this._updateDatepicker(e)
      }
    },
    _gotoToday: function(a) {
      a = d(a);
      var b = this._getInst(a[0]);
      if (this._get(b, "gotoCurrent") && b.currentDay) {
        b.selectedDay = b.currentDay;
        b.drawMonth = b.selectedMonth = b.currentMonth;
        b.drawYear = b.selectedYear = b.currentYear
      } else {
        var c = new Date;
        b.selectedDay = c.getDate();
        b.drawMonth = b.selectedMonth = c.getMonth();
        b.drawYear = b.selectedYear = c.getFullYear()
      }
      this._notifyChange(b);
      this._adjustDate(a)
    },
    _selectMonthYear: function(a, b, c) {
      a = d(a);
      var e = this._getInst(a[0]);
      e["selected" + (c == "M" ? "Month": "Year")] = e["draw" + (c == "M" ? "Month": "Year")] = parseInt(b.options[b.selectedIndex].value, 10);
      this._notifyChange(e);
      this._adjustDate(a)
    },
    _selectDay: function(a, b, c, e) {
      var f = d(a);
      if (! (d(e).hasClass(this._unselectableClass) || this._isDisabledDatepicker(f[0]))) {
        f = this._getInst(f[0]);
        f.selectedDay = f.currentDay = d("a", e).html();
        f.selectedMonth = f.currentMonth = b;
        f.selectedYear = f.currentYear = c;
        this._selectDate(a, this._formatDate(f, f.currentDay, f.currentMonth, f.currentYear))
      }
    },
    _clearDate: function(a) {
      a = d(a);
      this._getInst(a[0]);
      this._selectDate(a, "")
    },
    _selectDate: function(a, b) {
      a = this._getInst(d(a)[0]);
      b = b != null ? b: this._formatDate(a);
      a.input && a.input.val(b);
      this._updateAlternate(a);
      var c = this._get(a, "onSelect");
      if (c) c.apply(a.input ? a.input[0] : null, [b, a]);
      else a.input && a.input.trigger("change");
      if (a.inline) this._updateDatepicker(a);
      else {
        this._hideDatepicker();
        this._lastInput = a.input[0];
        typeof a.input[0] != "object" && a.input.focus();
        this._lastInput = null
      }
    },
    _updateAlternate: function(a) {
      var b = this._get(a, "altField");
      if (b) {
        var c = this._get(a, "altFormat") || this._get(a, "dateFormat"),
        e = this._getDate(a),
        f = this.formatDate(c, e, this._getFormatConfig(a));
        d(b).each(function() {
          d(this).val(f)
        })
      }
    },
    noWeekends: function(a) {
      a = a.getDay();
      return [a > 0 && a < 6, ""]
    },
    iso8601Week: function(a) {
      a = new Date(a.getTime());
      a.setDate(a.getDate() + 4 - (a.getDay() || 7));
      var b = a.getTime();
      a.setMonth(0);
      a.setDate(1);
      return Math.floor(Math.round((b - a) / 864E5) / 7) + 1
    },
    parseDate: function(a, b, c) {
      if (a == null || b == null) throw "Invalid arguments";
      b = typeof b == "object" ? b.toString() : b + "";
      if (b == "") return null;
      var e = (c ? c.shortYearCutoff: null) || this._defaults.shortYearCutoff;
      e = typeof e != "string" ? e: (new Date).getFullYear() % 100 + parseInt(e, 10);
      for (var f = (c ? c.dayNamesShort: null) || this._defaults.dayNamesShort, h = (c ? c.dayNames: null) || this._defaults.dayNames, i = (c ? c.monthNamesShort: null) || this._defaults.monthNamesShort, g = (c ? c.monthNames: null) || this._defaults.monthNames, j = c = -1, l = -1, u = -1, k = false, o = function(p) { (p = A + 1 < a.length && a.charAt(A + 1) == p) && A++;
        return p
      },
      m = function(p) {
        var D = o(p);
        p = new RegExp("^\\d{1," + (p == "@" ? 14 : p == "!" ? 20 : p == "y" && D ? 4 : p == "o" ? 3 : 2) + "}");
        p = b.substring(q).match(p);
        if (!p) throw "Missing number at position " + q;
        q += p[0].length;
        return parseInt(p[0], 10)
      },
      n = function(p, D, K) {
        p = d.map(o(p) ? K: D,
        function(w, x) {
          return [[x, w]]
        }).sort(function(w, x) {
          return - (w[1].length - x[1].length)
        });
        var E = -1;
        d.each(p,
        function(w, x) {
          w = x[1];
          if (b.substr(q, w.length).toLowerCase() == w.toLowerCase()) {
            E = x[0];
            q += w.length;
            return false
          }
        });
        if (E != -1) return E + 1;
        else throw "Unknown name at position " + q;
      },
      s = function() {
        if (b.charAt(q) != a.charAt(A)) throw "Unexpected literal at position " + q;
        q++
      },
      q = 0, A = 0; A < a.length; A++) if (k) if (a.charAt(A) == "'" && !o("'")) k = false;
      else s();
      else switch (a.charAt(A)) {
      case "d":
        l = m("d");
        break;
      case "D":
        n("D", f, h);
        break;
      case "o":
        u = m("o");
        break;
      case "m":
        j = m("m");
        break;
      case "M":
        j = n("M", i, g);
        break;
      case "y":
        c = m("y");
        break;
      case "@":
        var v = new Date(m("@"));
        c = v.getFullYear();
        j = v.getMonth() + 1;
        l = v.getDate();
        break;
      case "!":
        v = new Date((m("!") - this._ticksTo1970) / 1E4);
        c = v.getFullYear();
        j = v.getMonth() + 1;
        l = v.getDate();
        break;
      case "'":
        if (o("'")) s();
        else k = true;
        break;
      default:
        s()
      }
      if (q < b.length) throw "Extra/unparsed characters found in date: " + b.substring(q);
      if (c == -1) c = (new Date).getFullYear();
      else if (c < 100) c += (new Date).getFullYear() - (new Date).getFullYear() % 100 + (c <= e ? 0 : -100);
      if (u > -1) {
        j = 1;
        l = u;
        do {
          e = this._getDaysInMonth(c, j - 1);
          if (l <= e) break;
          j++;
          l -= e
        } while ( 1 )
      }
      v = this._daylightSavingAdjust(new Date(c, j - 1, l));
      if (v.getFullYear() != c || v.getMonth() + 1 != j || v.getDate() != l) throw "Invalid date";
      return v
    },
    ATOM: "yy-mm-dd",
    COOKIE: "D, dd M yy",
    ISO_8601: "yy-mm-dd",
    RFC_822: "D, d M y",
    RFC_850: "DD, dd-M-y",
    RFC_1036: "D, d M y",
    RFC_1123: "D, d M yy",
    RFC_2822: "D, d M yy",
    RSS: "D, d M y",
    TICKS: "!",
    TIMESTAMP: "@",
    W3C: "yy-mm-dd",
    _ticksTo1970: (718685 + Math.floor(492.5) - Math.floor(19.7) + Math.floor(4.925)) * 24 * 60 * 60 * 1E7,
    formatDate: function(a, b, c) {
      if (!b) return "";
      var e = (c ? c.dayNamesShort: null) || this._defaults.dayNamesShort,
      f = (c ? c.dayNames: null) || this._defaults.dayNames,
      h = (c ? c.monthNamesShort: null) || this._defaults.monthNamesShort;
      c = (c ? c.monthNames: null) || this._defaults.monthNames;
      var i = function(o) { (o = k + 1 < a.length && a.charAt(k + 1) == o) && k++;
        return o
      },
      g = function(o, m, n) {
        m = "" + m;
        if (i(o)) for (; m.length < n;) m = "0" + m;
        return m
      },
      j = function(o, m, n, s) {
        return i(o) ? s[m] : n[m]
      },
      l = "",
      u = false;
      if (b) for (var k = 0; k < a.length; k++) if (u) if (a.charAt(k) == "'" && !i("'")) u = false;
      else l += a.charAt(k);
      else switch (a.charAt(k)) {
      case "d":
        l += g("d", b.getDate(), 2);
        break;
      case "D":
        l += j("D", b.getDay(), e, f);
        break;
      case "o":
        l += g("o", Math.round(((new Date(b.getFullYear(), b.getMonth(), b.getDate())).getTime() - (new Date(b.getFullYear(), 0, 0)).getTime()) / 864E5), 3);
        break;
      case "m":
        l += g("m", b.getMonth() + 1, 2);
        break;
      case "M":
        l += j("M", b.getMonth(), h, c);
        break;
      case "y":
        l += i("y") ? b.getFullYear() : (b.getYear() % 100 < 10 ? "0": "") + b.getYear() % 100;
        break;
      case "@":
        l += b.getTime();
        break;
      case "!":
        l += b.getTime() * 1E4 + this._ticksTo1970;
        break;
      case "'":
        if (i("'")) l += "'";
        else u = true;
        break;
      default:
        l += a.charAt(k)
      }
      return l
    },
    _possibleChars: function(a) {
      for (var b = "",
      c = false,
      e = function(h) { (h = f + 1 < a.length && a.charAt(f + 1) == h) && f++;
        return h
      },
      f = 0; f < a.length; f++) if (c) if (a.charAt(f) == "'" && !e("'")) c = false;
      else b += a.charAt(f);
      else switch (a.charAt(f)) {
      case "d":
      case "m":
      case "y":
      case "@":
        b += "0123456789";
        break;
      case "D":
      case "M":
        return null;
      case "'":
        if (e("'")) b += "'";
        else c = true;
        break;
      default:
        b += a.charAt(f)
      }
      return b
    },
    _get: function(a, b) {
      return a.settings[b] !== C ? a.settings[b] : this._defaults[b]
    },
    _setDateFromField: function(a, b) {
      if (a.input.val() != a.lastVal) {
        var c = this._get(a, "dateFormat"),
        e = a.lastVal = a.input ? a.input.val() : null,
        f,
        h;
        f = h = this._getDefaultDate(a);
        var i = this._getFormatConfig(a);
        try {
          f = this.parseDate(c, e, i) || h
        } catch(g) {
          this.log(g);
          e = b ? "": e
        }
        a.selectedDay = f.getDate();
        a.drawMonth = a.selectedMonth = f.getMonth();
        a.drawYear = a.selectedYear = f.getFullYear();
        a.currentDay = e ? f.getDate() : 0;
        a.currentMonth = e ? f.getMonth() : 0;
        a.currentYear = e ? f.getFullYear() : 0;
        this._adjustInstDate(a)
      }
    },
    _getDefaultDate: function(a) {
      return this._restrictMinMax(a, this._determineDate(a, this._get(a, "defaultDate"), new Date))
    },
    _determineDate: function(a, b, c) {
      var e = function(h) {
        var i = new Date;
        i.setDate(i.getDate() + h);
        return i
      },
      f = function(h) {
        try {
          return d.datepicker.parseDate(d.datepicker._get(a, "dateFormat"), h, d.datepicker._getFormatConfig(a))
        } catch(i) {}
        var g = (h.toLowerCase().match(/^c/) ? d.datepicker._getDate(a) : null) || new Date,
        j = g.getFullYear(),
        l = g.getMonth();
        g = g.getDate();
        for (var u = /([+-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
        k = u.exec(h); k;) {
          switch (k[2] || "d") {
          case "d":
          case "D":
            g += parseInt(k[1], 10);
            break;
          case "w":
          case "W":
            g += parseInt(k[1], 10) * 7;
            break;
          case "m":
          case "M":
            l += parseInt(k[1], 10);
            g = Math.min(g, d.datepicker._getDaysInMonth(j, l));
            break;
          case "y":
          case "Y":
            j += parseInt(k[1], 10);
            g = Math.min(g, d.datepicker._getDaysInMonth(j, l));
            break
          }
          k = u.exec(h)
        }
        return new Date(j, l, g)
      };
      if (b = (b = b == null || b === "" ? c: typeof b == "string" ? f(b) : typeof b == "number" ? isNaN(b) ? c: e(b) : new Date(b.getTime())) && b.toString() == "Invalid Date" ? c: b) {
        b.setHours(0);
        b.setMinutes(0);
        b.setSeconds(0);
        b.setMilliseconds(0)
      }
      return this._daylightSavingAdjust(b)
    },
    _daylightSavingAdjust: function(a) {
      if (!a) return null;
      a.setHours(a.getHours() > 12 ? a.getHours() + 2 : 0);
      return a
    },
    _setDate: function(a, b, c) {
      var e = !b,
      f = a.selectedMonth,
      h = a.selectedYear;
      b = this._restrictMinMax(a, this._determineDate(a, b, new Date));
      a.selectedDay = a.currentDay = b.getDate();
      a.drawMonth = a.selectedMonth = a.currentMonth = b.getMonth();
      a.drawYear = a.selectedYear = a.currentYear = b.getFullYear();
      if ((f != a.selectedMonth || h != a.selectedYear) && !c) this._notifyChange(a);
      this._adjustInstDate(a);
      if (a.input) a.input.val(e ? "": this._formatDate(a))
    },
    _getDate: function(a) {
      return ! a.currentYear || a.input && a.input.val() == "" ? null: this._daylightSavingAdjust(new Date(a.currentYear, a.currentMonth, a.currentDay))
    },
    _generateHTML: function(a) {
      var b = new Date;
      b = this._daylightSavingAdjust(new Date(b.getFullYear(), b.getMonth(), b.getDate()));
      var c = this._get(a, "isRTL"),
      e = this._get(a, "showButtonPanel"),
      f = this._get(a, "hideIfNoPrevNext"),
      h = this._get(a, "navigationAsDateFormat"),
      i = this._getNumberOfMonths(a),
      g = this._get(a, "showCurrentAtPos"),
      j = this._get(a, "stepMonths"),
      l = i[0] != 1 || i[1] != 1,
      u = this._daylightSavingAdjust(!a.currentDay ? new Date(9999, 9, 9) : new Date(a.currentYear, a.currentMonth, a.currentDay)),
      k = this._getMinMaxDate(a, "min"),
      o = this._getMinMaxDate(a, "max");
      g = a.drawMonth - g;
      var m = a.drawYear;
      if (g < 0) {
        g += 12;
        m--
      }
      if (o) {
        var n = this._daylightSavingAdjust(new Date(o.getFullYear(), o.getMonth() - i[0] * i[1] + 1, o.getDate()));
        for (n = k && n < k ? k: n; this._daylightSavingAdjust(new Date(m, g, 1)) > n;) {
          g--;
          if (g < 0) {
            g = 11;
            m--
          }
        }
      }
      a.drawMonth = g;
      a.drawYear = m;
      n = this._get(a, "prevText");
      n = !h ? n: this.formatDate(n, this._daylightSavingAdjust(new Date(m, g - j, 1)), this._getFormatConfig(a));
      n = this._canAdjustMonth(a, -1, m, g) ? '<a class="ui-datepicker-prev ui-corner-all" onclick="DP_jQuery_' + B + ".datepicker._adjustDate('#" + a.id + "', -" + j + ", 'M');\" title=\"" + n + '"><span class="ui-icon ui-icon-circle-triangle-' + (c ? "e": "w") + '">' + n + "</span></a>": f ? "": '<a class="ui-datepicker-prev ui-corner-all ui-state-disabled" title="' + n + '"><span class="ui-icon ui-icon-circle-triangle-' + (c ? "e": "w") + '">' + n + "</span></a>";
      var s = this._get(a, "nextText");
      s = !h ? s: this.formatDate(s, this._daylightSavingAdjust(new Date(m, g + j, 1)), this._getFormatConfig(a));
      f = this._canAdjustMonth(a, +1, m, g) ? '<a class="ui-datepicker-next ui-corner-all" onclick="DP_jQuery_' + B + ".datepicker._adjustDate('#" + a.id + "', +" + j + ", 'M');\" title=\"" + s + '"><span class="ui-icon ui-icon-circle-triangle-' + (c ? "w": "e") + '">' + s + "</span></a>": f ? "": '<a class="ui-datepicker-next ui-corner-all ui-state-disabled" title="' + s + '"><span class="ui-icon ui-icon-circle-triangle-' + (c ? "w": "e") + '">' + s + "</span></a>";
      j = this._get(a, "currentText");
      s = this._get(a, "gotoCurrent") && a.currentDay ? u: b;
      j = !h ? j: this.formatDate(j, s, this._getFormatConfig(a));
      h = !a.inline ? '<button type="button" class="ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all" onclick="DP_jQuery_' + B + '.datepicker._hideDatepicker();">' + this._get(a, "closeText") + "</button>": "";
      e = e ? '<div class="ui-datepicker-buttonpane ui-widget-content">' + (c ? h: "") + (this._isInRange(a, s) ? '<button type="button" class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all" onclick="DP_jQuery_' + B + ".datepicker._gotoToday('#" + a.id + "');\">" + j + "</button>": "") + (c ? "": h) + "</div>": "";
      h = parseInt(this._get(a, "firstDay"), 10);
      h = isNaN(h) ? 0 : h;
      j = this._get(a, "showWeek");
      s = this._get(a, "dayNames");
      this._get(a, "dayNamesShort");
      var q = this._get(a, "dayNamesMin"),
      A = this._get(a, "monthNames"),
      v = this._get(a, "monthNamesShort"),
      p = this._get(a, "beforeShowDay"),
      D = this._get(a, "showOtherMonths"),
      K = this._get(a, "selectOtherMonths");
      this._get(a, "calculateWeek");
      for (var E = this._getDefaultDate(a), w = "", x = 0; x < i[0]; x++) {
        var O = "";
        this.maxRows = 4;
        for (var G = 0; G < i[1]; G++) {
          var P = this._daylightSavingAdjust(new Date(m, g, a.selectedDay)),
          t = " ui-corner-all",
          y = "";
          if (l) {
            y += '<div class="ui-datepicker-group';
            if (i[1] > 1) switch (G) {
            case 0:
              y += " ui-datepicker-group-first";
              t = " ui-corner-" + (c ? "right": "left");
              break;
            case i[1] - 1 : y += " ui-datepicker-group-last";
              t = " ui-corner-" + (c ? "left": "right");
              break;
            default:
              y += " ui-datepicker-group-middle";
              t = "";
              break
            }
            y += '">'
          }
          y += '<div class="ui-datepicker-header ui-widget-header ui-helper-clearfix' + t + '">' + (/all|left/.test(t) && x == 0 ? c ? f: n: "") + (/all|right/.test(t) && x == 0 ? c ? n: f: "") + this._generateMonthYearHeader(a, g, m, k, o, x > 0 || G > 0, A, v) + '</div><table class="ui-datepicker-calendar"><thead><tr>';
          var z = j ? '<th class="ui-datepicker-week-col">' + this._get(a, "weekHeader") + "</th>": "";
          for (t = 0; t < 7; t++) {
            var r = (t + h) % 7;
            z += "<th" + ((t + h + 6) % 7 >= 5 ? ' class="ui-datepicker-week-end"': "") + '><span title="' + s[r] + '">' + q[r] + "</span></th>"
          }
          y += z + "</tr></thead><tbody>";
          z = this._getDaysInMonth(m, g);
          if (m == a.selectedYear && g == a.selectedMonth) a.selectedDay = Math.min(a.selectedDay, z);
          t = (this._getFirstDayOfMonth(m, g) - h + 7) % 7;
          z = Math.ceil((t + z) / 7);
          this.maxRows = z = l ? this.maxRows > z ? this.maxRows: z: z;
          r = this._daylightSavingAdjust(new Date(m, g, 1 - t));
          for (var Q = 0; Q < z; Q++) {
            y += "<tr>";
            var R = !j ? "": '<td class="ui-datepicker-week-col">' + this._get(a, "calculateWeek")(r) + "</td>";
            for (t = 0; t < 7; t++) {
              var I = p ? p.apply(a.input ? a.input[0] : null, [r]) : [true, ""],
              F = r.getMonth() != g,
              L = F && !K || !I[0] || k && r < k || o && r > o;
              R += '<td class="' + ((t + h + 6) % 7 >= 5 ? " ui-datepicker-week-end": "") + (F ? " ui-datepicker-other-month": "") + (r.getTime() == P.getTime() && g == a.selectedMonth && a._keyEvent || E.getTime() == r.getTime() && E.getTime() == P.getTime() ? " " + this._dayOverClass: "") + (L ? " " + this._unselectableClass + " ui-state-disabled": "") + (F && !D ? "": " " + I[1] + (r.getTime() == u.getTime() ? " " + this._currentClass: "") + (r.getTime() == b.getTime() ? " ui-datepicker-today": "")) + '"' + ((!F || D) && I[2] ? ' title="' + I[2] + '"': "") + (L ? "": ' onclick="DP_jQuery_' + B + ".datepicker._selectDay('#" + a.id + "'," + r.getMonth() + "," + r.getFullYear() + ', this);return false;"') + ">" + (F && !D ? "&#xa0;": L ? '<span class="ui-state-default">' + r.getDate() + "</span>": '<a class="ui-state-default' + (r.getTime() == b.getTime() ? " ui-state-highlight": "") + (r.getTime() == u.getTime() ? " ui-state-active": "") + (F ? " ui-priority-secondary": "") + '" href="#">' + r.getDate() + "</a>") + "</td>";
              r.setDate(r.getDate() + 1);
              r = this._daylightSavingAdjust(r)
            }
            y += R + "</tr>"
          }
          g++;
          if (g > 11) {
            g = 0;
            m++
          }
          y += "</tbody></table>" + (l ? "</div>" + (i[0] > 0 && G == i[1] - 1 ? '<div class="ui-datepicker-row-break"></div>': "") : "");
          O += y
        }
        w += O
      }
      w += e + (d.browser.msie && parseInt(d.browser.version, 10) < 7 && !a.inline ? '<iframe src="javascript:false;" class="ui-datepicker-cover" frameborder="0"></iframe>': "");
      a._keyEvent = false;
      return w
    },
    _generateMonthYearHeader: function(a, b, c, e, f, h, i, g) {
      var j = this._get(a, "changeMonth"),
      l = this._get(a, "changeYear"),
      u = this._get(a, "showMonthAfterYear"),
      k = '<div class="ui-datepicker-title">',
      o = "";
      if (h || !j) o += '<span class="ui-datepicker-month">' + i[b] + "</span>";
      else {
        i = e && e.getFullYear() == c;
        var m = f && f.getFullYear() == c;
        o += '<select class="ui-datepicker-month" onchange="DP_jQuery_' + B + ".datepicker._selectMonthYear('#" + a.id + "', this, 'M');\" >";
        for (var n = 0; n < 12; n++) if ((!i || n >= e.getMonth()) && (!m || n <= f.getMonth())) o += '<option value="' + n + '"' + (n == b ? ' selected="selected"': "") + ">" + g[n] + "</option>";
        o += "</select>"
      }
      u || (k += o + (h || !(j && l) ? "&#xa0;": ""));
      if (!a.yearshtml) {
        a.yearshtml = "";
        if (h || !l) k += '<span class="ui-datepicker-year">' + c + "</span>";
        else {
          g = this._get(a, "yearRange").split(":");
          var s = (new Date).getFullYear();
          i = function(q) {
            q = q.match(/c[+-].*/) ? c + parseInt(q.substring(1), 10) : q.match(/[+-].*/) ? s + parseInt(q, 10) : parseInt(q, 10);
            return isNaN(q) ? s: q
          };
          b = i(g[0]);
          g = Math.max(b, i(g[1] || ""));
          b = e ? Math.max(b, e.getFullYear()) : b;
          g = f ? Math.min(g, f.getFullYear()) : g;
          for (a.yearshtml += '<select class="ui-datepicker-year" onchange="DP_jQuery_' + B + ".datepicker._selectMonthYear('#" + a.id + "', this, 'Y');\" >"; b <= g; b++) a.yearshtml += '<option value="' + b + '"' + (b == c ? ' selected="selected"': "") + ">" + b + "</option>";
          a.yearshtml += "</select>";
          k += a.yearshtml;
          a.yearshtml = null
        }
      }
      k += this._get(a, "yearSuffix");
      if (u) k += (h || !(j && l) ? "&#xa0;": "") + o;
      k += "</div>";
      return k
    },
    _adjustInstDate: function(a, b, c) {
      var e = a.drawYear + (c == "Y" ? b: 0),
      f = a.drawMonth + (c == "M" ? b: 0);
      b = Math.min(a.selectedDay, this._getDaysInMonth(e, f)) + (c == "D" ? b: 0);
      e = this._restrictMinMax(a, this._daylightSavingAdjust(new Date(e, f, b)));
      a.selectedDay = e.getDate();
      a.drawMonth = a.selectedMonth = e.getMonth();
      a.drawYear = a.selectedYear = e.getFullYear();
      if (c == "M" || c == "Y") this._notifyChange(a)
    },
    _restrictMinMax: function(a, b) {
      var c = this._getMinMaxDate(a, "min");
      a = this._getMinMaxDate(a, "max");
      b = c && b < c ? c: b;
      return b = a && b > a ? a: b
    },
    _notifyChange: function(a) {
      var b = this._get(a, "onChangeMonthYear");
      if (b) b.apply(a.input ? a.input[0] : null, [a.selectedYear, a.selectedMonth + 1, a])
    },
    _getNumberOfMonths: function(a) {
      a = this._get(a, "numberOfMonths");
      return a == null ? [1, 1] : typeof a == "number" ? [1, a] : a
    },
    _getMinMaxDate: function(a, b) {
      return this._determineDate(a, this._get(a, b + "Date"), null)
    },
    _getDaysInMonth: function(a, b) {
      return 32 - this._daylightSavingAdjust(new Date(a, b, 32)).getDate()
    },
    _getFirstDayOfMonth: function(a, b) {
      return (new Date(a, b, 1)).getDay()
    },
    _canAdjustMonth: function(a, b, c, e) {
      var f = this._getNumberOfMonths(a);
      c = this._daylightSavingAdjust(new Date(c, e + (b < 0 ? b: f[0] * f[1]), 1));
      b < 0 && c.setDate(this._getDaysInMonth(c.getFullYear(), c.getMonth()));
      return this._isInRange(a, c)
    },
    _isInRange: function(a, b) {
      var c = this._getMinMaxDate(a, "min");
      a = this._getMinMaxDate(a, "max");
      return (!c || b.getTime() >= c.getTime()) && (!a || b.getTime() <= a.getTime())
    },
    _getFormatConfig: function(a) {
      var b = this._get(a, "shortYearCutoff");
      b = typeof b != "string" ? b: (new Date).getFullYear() % 100 + parseInt(b, 10);
      return {
        shortYearCutoff: b,
        dayNamesShort: this._get(a, "dayNamesShort"),
        dayNames: this._get(a, "dayNames"),
        monthNamesShort: this._get(a, "monthNamesShort"),
        monthNames: this._get(a, "monthNames")
      }
    },
    _formatDate: function(a, b, c, e) {
      if (!b) {
        a.currentDay = a.selectedDay;
        a.currentMonth = a.selectedMonth;
        a.currentYear = a.selectedYear
      }
      b = b ? typeof b == "object" ? b: this._daylightSavingAdjust(new Date(e, c, b)) : this._daylightSavingAdjust(new Date(a.currentYear, a.currentMonth, a.currentDay));
      return this.formatDate(this._get(a, "dateFormat"), b, this._getFormatConfig(a))
    }
  });
  d.fn.datepicker = function(a) {
    if (!this.length) return this;
    if (!d.datepicker.initialized) {
      d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);
      d.datepicker.initialized = true
    }
    var b = Array.prototype.slice.call(arguments, 1);
    if (typeof a == "string" && (a == "isDisabled" || a == "getDate" || a == "widget")) return d.datepicker["_" + a + "Datepicker"].apply(d.datepicker, [this[0]].concat(b));
    if (a == "option" && arguments.length == 2 && typeof arguments[1] == "string") return d.datepicker["_" + a + "Datepicker"].apply(d.datepicker, [this[0]].concat(b));
    return this.each(function() {
      typeof a == "string" ? d.datepicker["_" + a + "Datepicker"].apply(d.datepicker, [this].concat(b)) : d.datepicker._attachDatepicker(this, a)
    })
  };
  d.datepicker = new M;
  d.datepicker.initialized = false;
  d.datepicker.uuid = (new Date).getTime();
  d.datepicker.version = "1.8.16";
  window["DP_jQuery_" + B] = d
})(jQuery);; (function(b, d) {
  b.widget("ui.progressbar", {
    options: {
      value: 0,
      max: 100
    },
    min: 0,
    _create: function() {
      this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({
        role: "progressbar",
        "aria-valuemin": this.min,
        "aria-valuemax": this.options.max,
        "aria-valuenow": this._value()
      });
      this.valueDiv = b("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element);
      this.oldValue = this._value();
      this._refreshValue()
    },
    destroy: function() {
      this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow");
      this.valueDiv.remove();
      b.Widget.prototype.destroy.apply(this, arguments)
    },
    value: function(a) {
      if (a === d) return this._value();
      this._setOption("value", a);
      return this
    },
    _setOption: function(a, c) {
      if (a === "value") {
        this.options.value = c;
        this._refreshValue();
        this._value() === this.options.max && this._trigger("complete")
      }
      b.Widget.prototype._setOption.apply(this, arguments)
    },
    _value: function() {
      var a = this.options.value;
      if (typeof a !== "number") a = 0;
      return Math.min(this.options.max, Math.max(this.min, a))
    },
    _percentage: function() {
      return 100 * this._value() / this.options.max
    },
    _refreshValue: function() {
      var a = this.value(),
      c = this._percentage();
      if (this.oldValue !== a) {
        this.oldValue = a;
        this._trigger("change")
      }
      this.valueDiv.toggle(a > this.min).toggleClass("ui-corner-right", a === this.options.max).width(c.toFixed(0) + "%");
      this.element.attr("aria-valuenow", a)
    }
  });
  b.extend(b.ui.progressbar, {
    version: "1.8.16"
  })
})(jQuery);;
jQuery.effects ||
function(f, j) {
  function m(c) {
    var a;
    if (c && c.constructor == Array && c.length == 3) return c;
    if (a = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c)) return [parseInt(a[1], 10), parseInt(a[2], 10), parseInt(a[3], 10)];
    if (a = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c)) return [parseFloat(a[1]) * 2.55, parseFloat(a[2]) * 2.55, parseFloat(a[3]) * 2.55];
    if (a = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c)) return [parseInt(a[1], 16), parseInt(a[2], 16), parseInt(a[3], 16)];
    if (a = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c)) return [parseInt(a[1] + a[1], 16), parseInt(a[2] + a[2], 16), parseInt(a[3] + a[3], 16)];
    if (/rgba\(0, 0, 0, 0\)/.exec(c)) return n.transparent;
    return n[f.trim(c).toLowerCase()]
  }
  function s(c, a) {
    var b;
    do {
      b = f.curCSS(c, a);
      if (b != "" && b != "transparent" || f.nodeName(c, "body")) break;
      a = "backgroundColor"
    } while ( c = c . parentNode );
    return m(b)
  }
  function o() {
    var c = document.defaultView ? document.defaultView.getComputedStyle(this, null) : this.currentStyle,
    a = {},
    b,
    d;
    if (c && c.length && c[0] && c[c[0]]) for (var e = c.length; e--;) {
      b = c[e];
      if (typeof c[b] == "string") {
        d = b.replace(/\-(\w)/g,
        function(g, h) {
          return h.toUpperCase()
        });
        a[d] = c[b]
      }
    } else for (b in c) if (typeof c[b] === "string") a[b] = c[b];
    return a
  }
  function p(c) {
    var a, b;
    for (a in c) {
      b = c[a];
      if (b == null || f.isFunction(b) || a in t || /scrollbar/.test(a) || !/color/i.test(a) && isNaN(parseFloat(b))) delete c[a]
    }
    return c
  }
  function u(c, a) {
    var b = {
      _: 0
    },
    d;
    for (d in a) if (c[d] != a[d]) b[d] = a[d];
    return b
  }
  function k(c, a, b, d) {
    if (typeof c == "object") {
      d = a;
      b = null;
      a = c;
      c = a.effect
    }
    if (f.isFunction(a)) {
      d = a;
      b = null;
      a = {}
    }
    if (typeof a == "number" || f.fx.speeds[a]) {
      d = b;
      b = a;
      a = {}
    }
    if (f.isFunction(b)) {
      d = b;
      b = null
    }
    a = a || {};
    b = b || a.duration;
    b = f.fx.off ? 0 : typeof b == "number" ? b: b in f.fx.speeds ? f.fx.speeds[b] : f.fx.speeds._default;
    d = d || a.complete;
    return [c, a, b, d]
  }
  function l(c) {
    if (!c || typeof c === "number" || f.fx.speeds[c]) return true;
    if (typeof c === "string" && !f.effects[c]) return true;
    return false
  }
  f.effects = {};
  f.each(["backgroundColor", "borderBottomColor", "borderLeftColor", "borderRightColor", "borderTopColor", "borderColor", "color", "outlineColor"],
  function(c, a) {
    f.fx.step[a] = function(b) {
      if (!b.colorInit) {
        b.start = s(b.elem, a);
        b.end = m(b.end);
        b.colorInit = true
      }
      b.elem.style[a] = "rgb(" + Math.max(Math.min(parseInt(b.pos * (b.end[0] - b.start[0]) + b.start[0], 10), 255), 0) + "," + Math.max(Math.min(parseInt(b.pos * (b.end[1] - b.start[1]) + b.start[1], 10), 255), 0) + "," + Math.max(Math.min(parseInt(b.pos * (b.end[2] - b.start[2]) + b.start[2], 10), 255), 0) + ")"
    }
  });
  var n = {
    aqua: [0, 255, 255],
    azure: [240, 255, 255],
    beige: [245, 245, 220],
    black: [0, 0, 0],
    blue: [0, 0, 255],
    brown: [165, 42, 42],
    cyan: [0, 255, 255],
    darkblue: [0, 0, 139],
    darkcyan: [0, 139, 139],
    darkgrey: [169, 169, 169],
    darkgreen: [0, 100, 0],
    darkkhaki: [189, 183, 107],
    darkmagenta: [139, 0, 139],
    darkolivegreen: [85, 107, 47],
    darkorange: [255, 140, 0],
    darkorchid: [153, 50, 204],
    darkred: [139, 0, 0],
    darksalmon: [233, 150, 122],
    darkviolet: [148, 0, 211],
    fuchsia: [255, 0, 255],
    gold: [255, 215, 0],
    green: [0, 128, 0],
    indigo: [75, 0, 130],
    khaki: [240, 230, 140],
    lightblue: [173, 216, 230],
    lightcyan: [224, 255, 255],
    lightgreen: [144, 238, 144],
    lightgrey: [211, 211, 211],
    lightpink: [255, 182, 193],
    lightyellow: [255, 255, 224],
    lime: [0, 255, 0],
    magenta: [255, 0, 255],
    maroon: [128, 0, 0],
    navy: [0, 0, 128],
    olive: [128, 128, 0],
    orange: [255, 165, 0],
    pink: [255, 192, 203],
    purple: [128, 0, 128],
    violet: [128, 0, 128],
    red: [255, 0, 0],
    silver: [192, 192, 192],
    white: [255, 255, 255],
    yellow: [255, 255, 0],
    transparent: [255, 255, 255]
  },
  q = ["add", "remove", "toggle"],
  t = {
    border: 1,
    borderBottom: 1,
    borderColor: 1,
    borderLeft: 1,
    borderRight: 1,
    borderTop: 1,
    borderWidth: 1,
    margin: 1,
    padding: 1
  };
  f.effects.animateClass = function(c, a, b, d) {
    if (f.isFunction(b)) {
      d = b;
      b = null
    }
    return this.queue(function() {
      var e = f(this),
      g = e.attr("style") || " ",
      h = p(o.call(this)),
      r,
      v = e.attr("class");
      f.each(q,
      function(w, i) {
        c[i] && e[i + "Class"](c[i])
      });
      r = p(o.call(this));
      e.attr("class", v);
      e.animate(u(h, r), {
        queue: false,
        duration: a,
        easing: b,
        complete: function() {
          f.each(q,
          function(w, i) {
            c[i] && e[i + "Class"](c[i])
          });
          if (typeof e.attr("style") == "object") {
            e.attr("style").cssText = "";
            e.attr("style").cssText = g
          } else e.attr("style", g);
          d && d.apply(this, arguments);
          f.dequeue(this)
        }
      })
    })
  };
  f.fn.extend({
    _addClass: f.fn.addClass,
    addClass: function(c, a, b, d) {
      return a ? f.effects.animateClass.apply(this, [{
        add: c
      },
      a, b, d]) : this._addClass(c)
    },
    _removeClass: f.fn.removeClass,
    removeClass: function(c, a, b, d) {
      return a ? f.effects.animateClass.apply(this, [{
        remove: c
      },
      a, b, d]) : this._removeClass(c)
    },
    _toggleClass: f.fn.toggleClass,
    toggleClass: function(c, a, b, d, e) {
      return typeof a == "boolean" || a === j ? b ? f.effects.animateClass.apply(this, [a ? {
        add: c
      }: {
        remove: c
      },
      b, d, e]) : this._toggleClass(c, a) : f.effects.animateClass.apply(this, [{
        toggle: c
      },
      a, b, d])
    },
    switchClass: function(c, a, b, d, e) {
      return f.effects.animateClass.apply(this, [{
        add: a,
        remove: c
      },
      b, d, e])
    }
  });
  f.extend(f.effects, {
    version: "1.8.16",
    save: function(c, a) {
      for (var b = 0; b < a.length; b++) a[b] !== null && c.data("ec.storage." + a[b], c[0].style[a[b]])
    },
    restore: function(c, a) {
      for (var b = 0; b < a.length; b++) a[b] !== null && c.css(a[b], c.data("ec.storage." + a[b]))
    },
    setMode: function(c, a) {
      if (a == "toggle") a = c.is(":hidden") ? "show": "hide";
      return a
    },
    getBaseline: function(c, a) {
      var b;
      switch (c[0]) {
      case "top":
        b = 0;
        break;
      case "middle":
        b = 0.5;
        break;
      case "bottom":
        b = 1;
        break;
      default:
        b = c[0] / a.height
      }
      switch (c[1]) {
      case "left":
        c = 0;
        break;
      case "center":
        c = 0.5;
        break;
      case "right":
        c = 1;
        break;
      default:
        c = c[1] / a.width
      }
      return {
        x: c,
        y: b
      }
    },
    createWrapper: function(c) {
      if (c.parent().is(".ui-effects-wrapper")) return c.parent();
      var a = {
        width: c.outerWidth(true),
        height: c.outerHeight(true),
        "float": c.css("float")
      },
      b = f("<div></div>").addClass("ui-effects-wrapper").css({
        fontSize: "100%",
        background: "transparent",
        border: "none",
        margin: 0,
        padding: 0
      }),
      d = document.activeElement;
      c.wrap(b);
      if (c[0] === d || f.contains(c[0], d)) f(d).focus();
      b = c.parent();
      if (c.css("position") == "static") {
        b.css({
          position: "relative"
        });
        c.css({
          position: "relative"
        })
      } else {
        f.extend(a, {
          position: c.css("position"),
          zIndex: c.css("z-index")
        });
        f.each(["top", "left", "bottom", "right"],
        function(e, g) {
          a[g] = c.css(g);
          if (isNaN(parseInt(a[g], 10))) a[g] = "auto"
        });
        c.css({
          position: "relative",
          top: 0,
          left: 0,
          right: "auto",
          bottom: "auto"
        })
      }
      return b.css(a).show()
    },
    removeWrapper: function(c) {
      var a, b = document.activeElement;
      if (c.parent().is(".ui-effects-wrapper")) {
        a = c.parent().replaceWith(c);
        if (c[0] === b || f.contains(c[0], b)) f(b).focus();
        return a
      }
      return c
    },
    setTransition: function(c, a, b, d) {
      d = d || {};
      f.each(a,
      function(e, g) {
        unit = c.cssUnit(g);
        if (unit[0] > 0) d[g] = unit[0] * b + unit[1]
      });
      return d
    }
  });
  f.fn.extend({
    effect: function(c) {
      var a = k.apply(this, arguments),
      b = {
        options: a[1],
        duration: a[2],
        callback: a[3]
      };
      a = b.options.mode;
      var d = f.effects[c];
      if (f.fx.off || !d) return a ? this[a](b.duration, b.callback) : this.each(function() {
        b.callback && b.callback.call(this)
      });
      return d.call(this, b)
    },
    _show: f.fn.show,
    show: function(c) {
      if (l(c)) return this._show.apply(this, arguments);
      else {
        var a = k.apply(this, arguments);
        a[1].mode = "show";
        return this.effect.apply(this, a)
      }
    },
    _hide: f.fn.hide,
    hide: function(c) {
      if (l(c)) return this._hide.apply(this, arguments);
      else {
        var a = k.apply(this, arguments);
        a[1].mode = "hide";
        return this.effect.apply(this, a)
      }
    },
    __toggle: f.fn.toggle,
    toggle: function(c) {
      if (l(c) || typeof c === "boolean" || f.isFunction(c)) return this.__toggle.apply(this, arguments);
      else {
        var a = k.apply(this, arguments);
        a[1].mode = "toggle";
        return this.effect.apply(this, a)
      }
    },
    cssUnit: function(c) {
      var a = this.css(c),
      b = [];
      f.each(["em", "px", "%", "pt"],
      function(d, e) {
        if (a.indexOf(e) > 0) b = [parseFloat(a), e]
      });
      return b
    }
  });
  f.easing.jswing = f.easing.swing;
  f.extend(f.easing, {
    def: "easeOutQuad",
    swing: function(c, a, b, d, e) {
      return f.easing[f.easing.def](c, a, b, d, e)
    },
    easeInQuad: function(c, a, b, d, e) {
      return d * (a /= e) * a + b
    },
    easeOutQuad: function(c, a, b, d, e) {
      return - d * (a /= e) * (a - 2) + b
    },
    easeInOutQuad: function(c, a, b, d, e) {
      if ((a /= e / 2) < 1) return d / 2 * a * a + b;
      return - d / 2 * (--a * (a - 2) - 1) + b
    },
    easeInCubic: function(c, a, b, d, e) {
      return d * (a /= e) * a * a + b
    },
    easeOutCubic: function(c, a, b, d, e) {
      return d * ((a = a / e - 1) * a * a + 1) + b
    },
    easeInOutCubic: function(c, a, b, d, e) {
      if ((a /= e / 2) < 1) return d / 2 * a * a * a + b;
      return d / 2 * ((a -= 2) * a * a + 2) + b
    },
    easeInQuart: function(c, a, b, d, e) {
      return d * (a /= e) * a * a * a + b
    },
    easeOutQuart: function(c, a, b, d, e) {
      return - d * ((a = a / e - 1) * a * a * a - 1) + b
    },
    easeInOutQuart: function(c, a, b, d, e) {
      if ((a /= e / 2) < 1) return d / 2 * a * a * a * a + b;
      return - d / 2 * ((a -= 2) * a * a * a - 2) + b
    },
    easeInQuint: function(c, a, b, d, e) {
      return d * (a /= e) * a * a * a * a + b
    },
    easeOutQuint: function(c, a, b, d, e) {
      return d * ((a = a / e - 1) * a * a * a * a + 1) + b
    },
    easeInOutQuint: function(c, a, b, d, e) {
      if ((a /= e / 2) < 1) return d / 2 * a * a * a * a * a + b;
      return d / 2 * ((a -= 2) * a * a * a * a + 2) + b
    },
    easeInSine: function(c, a, b, d, e) {
      return - d * Math.cos(a / e * (Math.PI / 2)) + d + b
    },
    easeOutSine: function(c, a, b, d, e) {
      return d * Math.sin(a / e * (Math.PI / 2)) + b
    },
    easeInOutSine: function(c, a, b, d, e) {
      return - d / 2 * (Math.cos(Math.PI * a / e) - 1) + b
    },
    easeInExpo: function(c, a, b, d, e) {
      return a == 0 ? b: d * Math.pow(2, 10 * (a / e - 1)) + b
    },
    easeOutExpo: function(c, a, b, d, e) {
      return a == e ? b + d: d * ( - Math.pow(2, -10 * a / e) + 1) + b
    },
    easeInOutExpo: function(c, a, b, d, e) {
      if (a == 0) return b;
      if (a == e) return b + d;
      if ((a /= e / 2) < 1) return d / 2 * Math.pow(2, 10 * (a - 1)) + b;
      return d / 2 * ( - Math.pow(2, -10 * --a) + 2) + b
    },
    easeInCirc: function(c, a, b, d, e) {
      return - d * (Math.sqrt(1 - (a /= e) * a) - 1) + b
    },
    easeOutCirc: function(c, a, b, d, e) {
      return d * Math.sqrt(1 - (a = a / e - 1) * a) + b
    },
    easeInOutCirc: function(c, a, b, d, e) {
      if ((a /= e / 2) < 1) return - d / 2 * (Math.sqrt(1 - a * a) - 1) + b;
      return d / 2 * (Math.sqrt(1 - (a -= 2) * a) + 1) + b
    },
    easeInElastic: function(c, a, b, d, e) {
      c = 1.70158;
      var g = 0,
      h = d;
      if (a == 0) return b;
      if ((a /= e) == 1) return b + d;
      g || (g = e * 0.3);
      if (h < Math.abs(d)) {
        h = d;
        c = g / 4
      } else c = g / (2 * Math.PI) * Math.asin(d / h);
      return - (h * Math.pow(2, 10 * (a -= 1)) * Math.sin((a * e - c) * 2 * Math.PI / g)) + b
    },
    easeOutElastic: function(c, a, b, d, e) {
      c = 1.70158;
      var g = 0,
      h = d;
      if (a == 0) return b;
      if ((a /= e) == 1) return b + d;
      g || (g = e * 0.3);
      if (h < Math.abs(d)) {
        h = d;
        c = g / 4
      } else c = g / (2 * Math.PI) * Math.asin(d / h);
      return h * Math.pow(2, -10 * a) * Math.sin((a * e - c) * 2 * Math.PI / g) + d + b
    },
    easeInOutElastic: function(c, a, b, d, e) {
      c = 1.70158;
      var g = 0,
      h = d;
      if (a == 0) return b;
      if ((a /= e / 2) == 2) return b + d;
      g || (g = e * 0.3 * 1.5);
      if (h < Math.abs(d)) {
        h = d;
        c = g / 4
      } else c = g / (2 * Math.PI) * Math.asin(d / h);
      if (a < 1) return - 0.5 * h * Math.pow(2, 10 * (a -= 1)) * Math.sin((a * e - c) * 2 * Math.PI / g) + b;
      return h * Math.pow(2, -10 * (a -= 1)) * Math.sin((a * e - c) * 2 * Math.PI / g) * 0.5 + d + b
    },
    easeInBack: function(c, a, b, d, e, g) {
      if (g == j) g = 1.70158;
      return d * (a /= e) * a * ((g + 1) * a - g) + b
    },
    easeOutBack: function(c, a, b, d, e, g) {
      if (g == j) g = 1.70158;
      return d * ((a = a / e - 1) * a * ((g + 1) * a + g) + 1) + b
    },
    easeInOutBack: function(c, a, b, d, e, g) {
      if (g == j) g = 1.70158;
      if ((a /= e / 2) < 1) return d / 2 * a * a * (((g *= 1.525) + 1) * a - g) + b;
      return d / 2 * ((a -= 2) * a * (((g *= 1.525) + 1) * a + g) + 2) + b
    },
    easeInBounce: function(c, a, b, d, e) {
      return d - f.easing.easeOutBounce(c, e - a, 0, d, e) + b
    },
    easeOutBounce: function(c, a, b, d, e) {
      return (a /= e) < 1 / 2.75 ? d * 7.5625 * a * a + b: a < 2 / 2.75 ? d * (7.5625 * (a -= 1.5 / 2.75) * a + 0.75) + b: a < 2.5 / 2.75 ? d * (7.5625 * (a -= 2.25 / 2.75) * a + 0.9375) + b: d * (7.5625 * (a -= 2.625 / 2.75) * a + 0.984375) + b
    },
    easeInOutBounce: function(c, a, b, d, e) {
      if (a < e / 2) return f.easing.easeInBounce(c, a * 2, 0, d, e) * 0.5 + b;
      return f.easing.easeOutBounce(c, a * 2 - e, 0, d, e) * 0.5 + d * 0.5 + b
    }
  })
} (jQuery);; (function(b) {
  b.effects.blind = function(c) {
    return this.queue(function() {
      var a = b(this),
      g = ["position", "top", "bottom", "left", "right"],
      f = b.effects.setMode(a, c.options.mode || "hide"),
      d = c.options.direction || "vertical";
      b.effects.save(a, g);
      a.show();
      var e = b.effects.createWrapper(a).css({
        overflow: "hidden"
      }),
      h = d == "vertical" ? "height": "width";
      d = d == "vertical" ? e.height() : e.width();
      f == "show" && e.css(h, 0);
      var i = {};
      i[h] = f == "show" ? d: 0;
      e.animate(i, c.duration, c.options.easing,
      function() {
        f == "hide" && a.hide();
        b.effects.restore(a, g);
        b.effects.removeWrapper(a);
        c.callback && c.callback.apply(a[0], arguments);
        a.dequeue()
      })
    })
  }
})(jQuery);; (function(e) {
  e.effects.bounce = function(b) {
    return this.queue(function() {
      var a = e(this),
      l = ["position", "top", "bottom", "left", "right"],
      h = e.effects.setMode(a, b.options.mode || "effect"),
      d = b.options.direction || "up",
      c = b.options.distance || 20,
      m = b.options.times || 5,
      i = b.duration || 250;
      /show|hide/.test(h) && l.push("opacity");
      e.effects.save(a, l);
      a.show();
      e.effects.createWrapper(a);
      var f = d == "up" || d == "down" ? "top": "left";
      d = d == "up" || d == "left" ? "pos": "neg";
      c = b.options.distance || (f == "top" ? a.outerHeight({
        margin: true
      }) / 3 : a.outerWidth({
        margin: true
      }) / 3);
      if (h == "show") a.css("opacity", 0).css(f, d == "pos" ? -c: c);
      if (h == "hide") c /= m * 2;
      h != "hide" && m--;
      if (h == "show") {
        var g = {
          opacity: 1
        };
        g[f] = (d == "pos" ? "+=": "-=") + c;
        a.animate(g, i / 2, b.options.easing);
        c /= 2;
        m--
      }
      for (g = 0; g < m; g++) {
        var j = {},
        k = {};
        j[f] = (d == "pos" ? "-=": "+=") + c;
        k[f] = (d == "pos" ? "+=": "-=") + c;
        a.animate(j, i / 2, b.options.easing).animate(k, i / 2, b.options.easing);
        c = h == "hide" ? c * 2 : c / 2
      }
      if (h == "hide") {
        g = {
          opacity: 0
        };
        g[f] = (d == "pos" ? "-=": "+=") + c;
        a.animate(g, i / 2, b.options.easing,
        function() {
          a.hide();
          e.effects.restore(a, l);
          e.effects.removeWrapper(a);
          b.callback && b.callback.apply(this, arguments)
        })
      } else {
        j = {};
        k = {};
        j[f] = (d == "pos" ? "-=": "+=") + c;
        k[f] = (d == "pos" ? "+=": "-=") + c;
        a.animate(j, i / 2, b.options.easing).animate(k, i / 2, b.options.easing,
        function() {
          e.effects.restore(a, l);
          e.effects.removeWrapper(a);
          b.callback && b.callback.apply(this, arguments)
        })
      }
      a.queue("fx",
      function() {
        a.dequeue()
      });
      a.dequeue()
    })
  }
})(jQuery);; (function(b) {
  b.effects.clip = function(e) {
    return this.queue(function() {
      var a = b(this),
      i = ["position", "top", "bottom", "left", "right", "height", "width"],
      f = b.effects.setMode(a, e.options.mode || "hide"),
      c = e.options.direction || "vertical";
      b.effects.save(a, i);
      a.show();
      var d = b.effects.createWrapper(a).css({
        overflow: "hidden"
      });
      d = a[0].tagName == "IMG" ? d: a;
      var g = {
        size: c == "vertical" ? "height": "width",
        position: c == "vertical" ? "top": "left"
      };
      c = c == "vertical" ? d.height() : d.width();
      if (f == "show") {
        d.css(g.size, 0);
        d.css(g.position, c / 2)
      }
      var h = {};
      h[g.size] = f == "show" ? c: 0;
      h[g.position] = f == "show" ? 0 : c / 2;
      d.animate(h, {
        queue: false,
        duration: e.duration,
        easing: e.options.easing,
        complete: function() {
          f == "hide" && a.hide();
          b.effects.restore(a, i);
          b.effects.removeWrapper(a);
          e.callback && e.callback.apply(a[0], arguments);
          a.dequeue()
        }
      })
    })
  }
})(jQuery);; (function(c) {
  c.effects.drop = function(d) {
    return this.queue(function() {
      var a = c(this),
      h = ["position", "top", "bottom", "left", "right", "opacity"],
      e = c.effects.setMode(a, d.options.mode || "hide"),
      b = d.options.direction || "left";
      c.effects.save(a, h);
      a.show();
      c.effects.createWrapper(a);
      var f = b == "up" || b == "down" ? "top": "left";
      b = b == "up" || b == "left" ? "pos": "neg";
      var g = d.options.distance || (f == "top" ? a.outerHeight({
        margin: true
      }) / 2 : a.outerWidth({
        margin: true
      }) / 2);
      if (e == "show") a.css("opacity", 0).css(f, b == "pos" ? -g: g);
      var i = {
        opacity: e == "show" ? 1 : 0
      };
      i[f] = (e == "show" ? b == "pos" ? "+=": "-=": b == "pos" ? "-=": "+=") + g;
      a.animate(i, {
        queue: false,

        duration: d.duration,
        easing: d.options.easing,
        complete: function() {
          e == "hide" && a.hide();
          c.effects.restore(a, h);
          c.effects.removeWrapper(a);
          d.callback && d.callback.apply(this, arguments);
          a.dequeue()
        }
      })
    })
  }
})(jQuery);; (function(j) {
  j.effects.explode = function(a) {
    return this.queue(function() {
      var c = a.options.pieces ? Math.round(Math.sqrt(a.options.pieces)) : 3,
      d = a.options.pieces ? Math.round(Math.sqrt(a.options.pieces)) : 3;
      a.options.mode = a.options.mode == "toggle" ? j(this).is(":visible") ? "hide": "show": a.options.mode;
      var b = j(this).show().css("visibility", "hidden"),
      g = b.offset();
      g.top -= parseInt(b.css("marginTop"), 10) || 0;
      g.left -= parseInt(b.css("marginLeft"), 10) || 0;
      for (var h = b.outerWidth(true), i = b.outerHeight(true), e = 0; e < c; e++) for (var f = 0; f < d; f++) b.clone().appendTo("body").wrap("<div></div>").css({
        position: "absolute",
        visibility: "visible",
        left: -f * (h / d),
        top: -e * (i / c)
      }).parent().addClass("ui-effects-explode").css({
        position: "absolute",
        overflow: "hidden",
        width: h / d,
        height: i / c,
        left: g.left + f * (h / d) + (a.options.mode == "show" ? (f - Math.floor(d / 2)) * (h / d) : 0),
        top: g.top + e * (i / c) + (a.options.mode == "show" ? (e - Math.floor(c / 2)) * (i / c) : 0),
        opacity: a.options.mode == "show" ? 0 : 1
      }).animate({
        left: g.left + f * (h / d) + (a.options.mode == "show" ? 0 : (f - Math.floor(d / 2)) * (h / d)),
        top: g.top + e * (i / c) + (a.options.mode == "show" ? 0 : (e - Math.floor(c / 2)) * (i / c)),
        opacity: a.options.mode == "show" ? 1 : 0
      },
      a.duration || 500);
      setTimeout(function() {
        a.options.mode == "show" ? b.css({
          visibility: "visible"
        }) : b.css({
          visibility: "visible"
        }).hide();
        a.callback && a.callback.apply(b[0]);
        b.dequeue();
        j("div.ui-effects-explode").remove()
      },
      a.duration || 500)
    })
  }
})(jQuery);; (function(b) {
  b.effects.fade = function(a) {
    return this.queue(function() {
      var c = b(this),
      d = b.effects.setMode(c, a.options.mode || "hide");
      c.animate({
        opacity: d
      },
      {
        queue: false,
        duration: a.duration,
        easing: a.options.easing,
        complete: function() {
          a.callback && a.callback.apply(this, arguments);
          c.dequeue()
        }
      })
    })
  }
})(jQuery);; (function(c) {
  c.effects.fold = function(a) {
    return this.queue(function() {
      var b = c(this),
      j = ["position", "top", "bottom", "left", "right"],
      d = c.effects.setMode(b, a.options.mode || "hide"),
      g = a.options.size || 15,
      h = !!a.options.horizFirst,
      k = a.duration ? a.duration / 2 : c.fx.speeds._default / 2;
      c.effects.save(b, j);
      b.show();
      var e = c.effects.createWrapper(b).css({
        overflow: "hidden"
      }),
      f = d == "show" != h,
      l = f ? ["width", "height"] : ["height", "width"];
      f = f ? [e.width(), e.height()] : [e.height(), e.width()];
      var i = /([0-9]+)%/.exec(g);
      if (i) g = parseInt(i[1], 10) / 100 * f[d == "hide" ? 0 : 1];
      if (d == "show") e.css(h ? {
        height: 0,
        width: g
      }: {
        height: g,
        width: 0
      });
      h = {};
      i = {};
      h[l[0]] = d == "show" ? f[0] : g;
      i[l[1]] = d == "show" ? f[1] : 0;
      e.animate(h, k, a.options.easing).animate(i, k, a.options.easing,
      function() {
        d == "hide" && b.hide();
        c.effects.restore(b, j);
        c.effects.removeWrapper(b);
        a.callback && a.callback.apply(b[0], arguments);
        b.dequeue()
      })
    })
  }
})(jQuery);; (function(b) {
  b.effects.highlight = function(c) {
    return this.queue(function() {
      var a = b(this),
      e = ["backgroundImage", "backgroundColor", "opacity"],
      d = b.effects.setMode(a, c.options.mode || "show"),
      f = {
        backgroundColor: a.css("backgroundColor")
      };
      if (d == "hide") f.opacity = 0;
      b.effects.save(a, e);
      a.show().css({
        backgroundImage: "none",
        backgroundColor: c.options.color || "#ffff99"
      }).animate(f, {
        queue: false,
        duration: c.duration,
        easing: c.options.easing,
        complete: function() {
          d == "hide" && a.hide();
          b.effects.restore(a, e);
          d == "show" && !b.support.opacity && this.style.removeAttribute("filter");
          c.callback && c.callback.apply(this, arguments);
          a.dequeue()
        }
      })
    })
  }
})(jQuery);; (function(d) {
  d.effects.pulsate = function(a) {
    return this.queue(function() {
      var b = d(this),
      c = d.effects.setMode(b, a.options.mode || "show");
      times = (a.options.times || 5) * 2 - 1;
      duration = a.duration ? a.duration / 2 : d.fx.speeds._default / 2;
      isVisible = b.is(":visible");
      animateTo = 0;
      if (!isVisible) {
        b.css("opacity", 0).show();
        animateTo = 1
      }
      if (c == "hide" && isVisible || c == "show" && !isVisible) times--;
      for (c = 0; c < times; c++) {
        b.animate({
          opacity: animateTo
        },
        duration, a.options.easing);
        animateTo = (animateTo + 1) % 2
      }
      b.animate({
        opacity: animateTo
      },
      duration, a.options.easing,
      function() {
        animateTo == 0 && b.hide();
        a.callback && a.callback.apply(this, arguments)
      });
      b.queue("fx",
      function() {
        b.dequeue()
      }).dequeue()
    })
  }
})(jQuery);; (function(c) {
  c.effects.puff = function(b) {
    return this.queue(function() {
      var a = c(this),
      e = c.effects.setMode(a, b.options.mode || "hide"),
      g = parseInt(b.options.percent, 10) || 150,
      h = g / 100,
      i = {
        height: a.height(),
        width: a.width()
      };
      c.extend(b.options, {
        fade: true,
        mode: e,
        percent: e == "hide" ? g: 100,
        from: e == "hide" ? i: {
          height: i.height * h,
          width: i.width * h
        }
      });
      a.effect("scale", b.options, b.duration, b.callback);
      a.dequeue()
    })
  };
  c.effects.scale = function(b) {
    return this.queue(function() {
      var a = c(this),
      e = c.extend(true, {},
      b.options),
      g = c.effects.setMode(a, b.options.mode || "effect"),
      h = parseInt(b.options.percent, 10) || (parseInt(b.options.percent, 10) == 0 ? 0 : g == "hide" ? 0 : 100),
      i = b.options.direction || "both",
      f = b.options.origin;
      if (g != "effect") {
        e.origin = f || ["middle", "center"];
        e.restore = true
      }
      f = {
        height: a.height(),
        width: a.width()
      };
      a.from = b.options.from || (g == "show" ? {
        height: 0,
        width: 0
      }: f);
      h = {
        y: i != "horizontal" ? h / 100 : 1,
        x: i != "vertical" ? h / 100 : 1
      };
      a.to = {
        height: f.height * h.y,
        width: f.width * h.x
      };
      if (b.options.fade) {
        if (g == "show") {
          a.from.opacity = 0;
          a.to.opacity = 1
        }
        if (g == "hide") {
          a.from.opacity = 1;
          a.to.opacity = 0
        }
      }
      e.from = a.from;
      e.to = a.to;
      e.mode = g;
      a.effect("size", e, b.duration, b.callback);
      a.dequeue()
    })
  };
  c.effects.size = function(b) {
    return this.queue(function() {
      var a = c(this),
      e = ["position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity"],
      g = ["position", "top", "bottom", "left", "right", "overflow", "opacity"],
      h = ["width", "height", "overflow"],
      i = ["fontSize"],
      f = ["borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom"],
      k = ["borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight"],
      p = c.effects.setMode(a, b.options.mode || "effect"),
      n = b.options.restore || false,
      m = b.options.scale || "both",
      l = b.options.origin,
      j = {
        height: a.height(),
        width: a.width()
      };
      a.from = b.options.from || j;
      a.to = b.options.to || j;
      if (l) {
        l = c.effects.getBaseline(l, j);
        a.from.top = (j.height - a.from.height) * l.y;
        a.from.left = (j.width - a.from.width) * l.x;
        a.to.top = (j.height - a.to.height) * l.y;
        a.to.left = (j.width - a.to.width) * l.x
      }
      var d = {
        from: {
          y: a.from.height / j.height,
          x: a.from.width / j.width
        },
        to: {
          y: a.to.height / j.height,
          x: a.to.width / j.width
        }
      };
      if (m == "box" || m == "both") {
        if (d.from.y != d.to.y) {
          e = e.concat(f);
          a.from = c.effects.setTransition(a, f, d.from.y, a.from);
          a.to = c.effects.setTransition(a, f, d.to.y, a.to)
        }
        if (d.from.x != d.to.x) {
          e = e.concat(k);
          a.from = c.effects.setTransition(a, k, d.from.x, a.from);
          a.to = c.effects.setTransition(a, k, d.to.x, a.to)
        }
      }
      if (m == "content" || m == "both") if (d.from.y != d.to.y) {
        e = e.concat(i);
        a.from = c.effects.setTransition(a, i, d.from.y, a.from);
        a.to = c.effects.setTransition(a, i, d.to.y, a.to)
      }
      c.effects.save(a, n ? e: g);
      a.show();
      c.effects.createWrapper(a);
      a.css("overflow", "hidden").css(a.from);
      if (m == "content" || m == "both") {
        f = f.concat(["marginTop", "marginBottom"]).concat(i);
        k = k.concat(["marginLeft", "marginRight"]);
        h = e.concat(f).concat(k);
        a.find("*[width]").each(function() {
          child = c(this);
          n && c.effects.save(child, h);
          var o = {
            height: child.height(),
            width: child.width()
          };
          child.from = {
            height: o.height * d.from.y,
            width: o.width * d.from.x
          };
          child.to = {
            height: o.height * d.to.y,
            width: o.width * d.to.x
          };
          if (d.from.y != d.to.y) {
            child.from = c.effects.setTransition(child, f, d.from.y, child.from);
            child.to = c.effects.setTransition(child, f, d.to.y, child.to)
          }
          if (d.from.x != d.to.x) {
            child.from = c.effects.setTransition(child, k, d.from.x, child.from);
            child.to = c.effects.setTransition(child, k, d.to.x, child.to)
          }
          child.css(child.from);
          child.animate(child.to, b.duration, b.options.easing,
          function() {
            n && c.effects.restore(child, h)
          })
        })
      }
      a.animate(a.to, {
        queue: false,
        duration: b.duration,
        easing: b.options.easing,
        complete: function() {
          a.to.opacity === 0 && a.css("opacity", a.from.opacity);
          p == "hide" && a.hide();
          c.effects.restore(a, n ? e: g);
          c.effects.removeWrapper(a);
          b.callback && b.callback.apply(this, arguments);
          a.dequeue()
        }
      })
    })
  }
})(jQuery);; (function(d) {
  d.effects.shake = function(a) {
    return this.queue(function() {
      var b = d(this),
      j = ["position", "top", "bottom", "left", "right"];
      d.effects.setMode(b, a.options.mode || "effect");
      var c = a.options.direction || "left",
      e = a.options.distance || 20,
      l = a.options.times || 3,
      f = a.duration || a.options.duration || 140;
      d.effects.save(b, j);
      b.show();
      d.effects.createWrapper(b);
      var g = c == "up" || c == "down" ? "top": "left",
      h = c == "up" || c == "left" ? "pos": "neg";
      c = {};
      var i = {},
      k = {};
      c[g] = (h == "pos" ? "-=": "+=") + e;
      i[g] = (h == "pos" ? "+=": "-=") + e * 2;
      k[g] = (h == "pos" ? "-=": "+=") + e * 2;
      b.animate(c, f, a.options.easing);
      for (e = 1; e < l; e++) b.animate(i, f, a.options.easing).animate(k, f, a.options.easing);
      b.animate(i, f, a.options.easing).animate(c, f / 2, a.options.easing,
      function() {
        d.effects.restore(b, j);
        d.effects.removeWrapper(b);
        a.callback && a.callback.apply(this, arguments)
      });
      b.queue("fx",
      function() {
        b.dequeue()
      });
      b.dequeue()
    })
  }
})(jQuery);; (function(c) {
  c.effects.slide = function(d) {
    return this.queue(function() {
      var a = c(this),
      h = ["position", "top", "bottom", "left", "right"],
      f = c.effects.setMode(a, d.options.mode || "show"),
      b = d.options.direction || "left";
      c.effects.save(a, h);
      a.show();
      c.effects.createWrapper(a).css({
        overflow: "hidden"
      });
      var g = b == "up" || b == "down" ? "top": "left";
      b = b == "up" || b == "left" ? "pos": "neg";
      var e = d.options.distance || (g == "top" ? a.outerHeight({
        margin: true
      }) : a.outerWidth({
        margin: true
      }));
      if (f == "show") a.css(g, b == "pos" ? isNaN(e) ? "-" + e: -e: e);
      var i = {};
      i[g] = (f == "show" ? b == "pos" ? "+=": "-=": b == "pos" ? "-=": "+=") + e;
      a.animate(i, {
        queue: false,
        duration: d.duration,
        easing: d.options.easing,
        complete: function() {
          f == "hide" && a.hide();
          c.effects.restore(a, h);
          c.effects.removeWrapper(a);
          d.callback && d.callback.apply(this, arguments);
          a.dequeue()
        }
      })
    })
  }
})(jQuery);; (function(e) {
  e.effects.transfer = function(a) {
    return this.queue(function() {
      var b = e(this),
      c = e(a.options.to),
      d = c.offset();
      c = {
        top: d.top,
        left: d.left,
        height: c.innerHeight(),
        width: c.innerWidth()
      };
      d = b.offset();
      var f = e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({
        top: d.top,
        left: d.left,
        height: b.innerHeight(),
        width: b.innerWidth(),
        position: "absolute"
      }).animate(c, a.duration, a.options.easing,
      function() {
        f.remove();
        a.callback && a.callback.apply(b[0], arguments);
        b.dequeue()
      })
    })
  }
})(jQuery);;
var type_offset = {
  1 : 121,
  3 : 188,
  4 : 258,
  5 : 424,
  11 : 490,
  13 : 584,
  36 : 0
};
var lastPage = "";
var lastTime = new Date( - 300);
function __GetCookie(cookieName) {
  var theCookie = "" + document.cookie;
  var ind = theCookie.indexOf(cookieName);
  if (ind == -1 || cookieName == "") return "";
  var ind1 = theCookie.indexOf(';', ind);
  if (ind1 == -1) ind1 = theCookie.length;
  return unescape(theCookie.substring(ind + cookieName.length + 1, ind1));
};
function __SetCookie(name, value) {
  var Days = 365;
  var exp = new Date();
  exp.setTime(exp.getTime() + Days * 24 * 60 * 60 * 1000);
  document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString() + "; path=/; domain=.bilibili.tv";
};
function ChatGetSettings(key) {
  if (typeof(localStorage) != "undefined") {
    return localStorage.getItem(key)
  } else {
    return __GetCookie(key);
  }
}
function ChatSaveSettings(key, val) {
  if (typeof(localStorage) != "undefined") {
    return localStorage.setItem(key, val)
  } else {
    return __SetCookie(key, val);
  }
}
var lastMessageBoxLayer = 10000;
function MessageBox(params) {
  if (typeof(params) == "undefined") {
    this.evType = "over";
    this.Overlap = false;
    this.focusShowPos = false;
    this.zIndex = 10000;
    return;
  } else if (typeof(params) == 'string') {
    this.evType = params;
  } else {
    this.evType = typeof(params.evType) == 'undefined' ? 'over': params.evType;
  }
  this.Overlap = typeof(params.Overlap) == 'undefined' ? false: params.Overlap;
  this.focusShowPos = typeof(params.focusShowPos) == 'undefined' ? false: params.focusShowPos;
  if (typeof(params.position) != 'undefined') {
    this.sp_position = {
      left: params.position.left,
      top: params.position.top
    };
  }
  if (typeof(params.zIndex) != 'undefined') {
    this.zIndex = params.zIndex;
  } else {
    this.zIndex = 10000;
  }
};
MessageBox.prototype = {
  timer: null,
  msgbox: null,
  bindobj: null,
  incomingTimer: null,
  position: {},
  show: function(obj, msg, timeout, icon, onclick) {
    if (this.Overlap == false && $(obj).attr('hasMessageBox') == 'yes') return;
    $(obj).attr('hasMessageBox', 'yes');
    if (typeof(timeout) == "undefined") timeout = 1000;
    if (typeof(icon) == "undefined") icon = "msg";
    if (timeout == "button") {
      onclick = icon;
      icon = timeout;
      timeout = 1000;
    }
    var vtimeout = timeout;
    if (timeout == 0) vtimeout = 50;
    var ricon = icon;
    if (icon == "button") ricon = "question";
    var self = this;
    self.leftTimer = function() {
      if (icon == 'button') return;
      clearTimeout(self.timer);
      self.timer = setTimeout(function() {
        clearTimeout(self.timer);
        self.close(self);
      },
      vtimeout);
    };
    self.incomingTimer = function() {
      clearTimeout(self.timer);
    }
    this.bindobj = obj;
    this.msgbox = $('<div class="m_layer"><div class="bg"><div class="content"><div class="mini"><b class="' + ricon + '"></b>' + msg + (icon == 'button' ? '<div class="btnbox"><a class="button ok">确认</a><a class="button cancel">取消</a></div>': '') + '</div></div></div></div>').prependTo("body");
    this.msgbox.css("z-index", self.zIndex);
    if (this.evType == 'over') {
      $(obj).bind('mouseout', self.leftTimer);
      $(obj).bind('mouseover', self.incomingTimer);
      this.msgbox.bind('mouseover',
      function() {
        clearTimeout(self.timer);
      });
      this.msgbox.bind('mouseout', self.leftTimer);
    } else {
      $(obj).bind('blur', self.leftTimer);
    }
    var effDirection = "down";
    if (this.focusShowPos != "down" && ($(obj).offset().top + $(obj).outerHeight() + this.msgbox.outerHeight() - $('body').scrollTop() > $(window).height() || this.focusShowPos == 'up')) {
      effDirection = "up";
      self.position.top = ($(obj).offset().top - this.msgbox.outerHeight());
    } else {
      self.position.top = $(obj).offset().top + $(obj).outerHeight();
    }
    self.position.left = $(obj).offset().left;
    if (typeof(self.sp_position) != "undefined") {
      self.position = self.sp_position;
    }
    this.msgbox.css("left", self.position.left + "px");
    this.msgbox.css("top", self.position.top + "px");
    this.msgbox.css("z-index", lastMessageBoxLayer++);
    this.msgbox.hide();
    if (icon == "button") {
      this.msgbox.find(".ok").click(function() {
        if (typeof(onclick) == "undefined" || onclick(self) != false) {
          self.close();
        }
      });
      this.msgbox.find(".cancel").click(function() {
        self.close();
      });
    }
    if (timeout != 0) self.leftTimer();
    if (typeof(jQuery.ui) != 'undefined' && effDirection == "up") {
      this.msgbox.show("slide", {
        direction: "up"
      },
      200);
    } else {
      this.msgbox.slideDown(200);
    }
    return this.msgbox;
  },
  close: function() {
    var self = this;
    $(self.bindobj).attr('hasMessageBox', '');
    this.msgbox.slideUp(200);
    setTimeout(function() {
      self.msgbox.remove();
      if (self.evType == 'over') {
        $(self.bindobj).unbind('mouseover', self.incomingTimer);
      }
      $(self.bindobj).unbind(self.evType == 'over' ? 'mouseout': 'blur', self.leftTimer);
    },
    200);
  }
};
var evCardTimer = null;
function loadFB(aid, page, callback) {
  var curPage = "/feedback/arc-" + aid + "\-" + page + ".html?r=" + Math.random();
  if (curPage == lastPage) return;
  lastPage = curPage;
  $(".comm > .loading").remove();
  $('<div class="loading"></div>').prependTo(".comm");
  var startTime = new Date();
  $.ajax(lastPage, {
    success: function(data) {
      var dur = new Date().getTime() - startTime.getTime();
      if (dur < 500) {
        setTimeout(function() {
          $(".comm").html(data);
          if (typeof(callback) != "undefined") callback();
          bindCardEvent();
        },
        300 - dur <= 0 ? 10 : 300 - dur);
      } else {
        $(".comm").html(data);
        if (typeof(callback) != "undefined") callback();
        bindCardEvent();
      }
    }
  });
}
var searchKW = "";
function searchAT() {
  searchKW = $("#search_key").val();
  loadAT(1);
}
function loadAT(page) {
  var curPage = "/feedback/at-" + page + ".html?search=" + searchKW + "&att=" + ($(".ms-btn.addinfo").hasClass("on") ? 1 : 0) + "&r=" + Math.random();
  if (curPage == lastPage) return;
  lastPage = curPage;
  $("#atme.atlist > .loading").remove();
  $('<div class="loading"></div>').prependTo("#atme.atlist");
  var startTime = new Date();
  $.ajax(lastPage, {
    success: function(data) {
      var dur = new Date().getTime() - startTime.getTime();
      if (dur < 500) {
        setTimeout(function() {
          $("#atme.atlist").html(data);
          bindCardEvent();
        },
        300 - dur <= 0 ? 10 : 300 - dur);
      } else {
        $("#atme.atlist").html(data);
        bindCardEvent();
      }
    }
  });
}
function searchDyn() {
  searchKW = $("#search_key").val();
  loadDyn(1);
}
function loadDyn(page) {
  var curPage = "/dynamic/dyn-" + page + ".html?search=" + searchKW + "&fb=" + ($(".ms-btn.comm").hasClass("on") ? 1 : 0) + "&r=" + Math.random();
  if (curPage == lastPage) return;
  lastPage = curPage;
  $("#dynlist.atlist > .loading").remove();
  $('<div class="loading"></div>').prependTo("#dynlist.atlist");
  var startTime = new Date();
  $.ajax(lastPage, {
    success: function(data) {
      var dur = new Date().getTime() - startTime.getTime();
      if (dur < 500) {
        setTimeout(function() {
          $("#dynlist.atlist").html(data);
          bindCardEvent();
        },
        300 - dur <= 0 ? 10 : 300 - dur);
      } else {
        $("#dynlist.atlist").html(data);
        bindCardEvent();
      }
    }
  });
}
function agFB(obj, aid, news_id, rid) {
  $.ajax(themeurl+"/inc/wp-digg.php?aid=" + aid + "&news_id=" + news_id + "&rid=" + rid, {
    success: function(data) {
      if (data != "OK") { (new MessageBox()).show(obj, data, 2000, "warning");
      } else {  
         (new MessageBox()).show(obj, "赞同成功", 500, "info");
      }
    },
    error: function() { (new MessageBox()).show(obj, "发送失败，请检查您的网络或发送邮件至 orz#hdslb.com", 2000, "error");
    }
  });
  return false;
}
function dagFB(obj, aid, news_id, rid) {
	$.ajax(themeurl+"/inc/wp-undigg.php?aid=" + aid + "&news_id=" + news_id + "&rid=" + rid, {
    success: function(data) {
      if (data != "OK") { (new MessageBox()).show(obj, data, 2000, "warning");
      } else {
        (new MessageBox()).show(obj, "反对成功", 500, "info");
      }
    },
    error: function() { (new MessageBox()).show(obj, "发送失败，请检查您的网络或发送邮件至 orz#hdslb.com", 2000, "error");
    }
  });
  return false;
}
function adHideFB(obj, aid, news_id, rid) {
  if (obj == "undefined") obj = this;
  $.ajax("/m/hideFeedback?aid=" + aid + "&news_id=" + news_id + "&rid=" + rid, {
    success: function(data) {
      if (data != "OK") { (new MessageBox()).show(obj, data, 2000, "warning");
      } else { (new MessageBox()).show(obj, "隐藏成功", 500, "info");
        $(obj).parent().find(".showfb").show();
        $(obj).hide();
      }
    },
    error: function() { (new MessageBox()).show(obj, "发送失败，请检查您的网络或发送邮件至 orz#hdslb.com", 2000, "error");
    }
  });
  return false;
}
function adShowFB(obj, aid, news_id, rid) {
  if (obj == "undefined") obj = this;
  $.ajax("/m/showFeedback?aid=" + aid + "&news_id=" + news_id + "&rid=" + rid, {
    success: function(data) {
      if (data != "OK") { (new MessageBox()).show(obj, data, 2000, "warning");
      } else { (new MessageBox()).show(obj, "显示成功", 500, "info");
        $(obj).parent().find(".hidefb").show();
        $(obj).hide();
      }
    },
    error: function() { (new MessageBox()).show(obj, "发送失败，请检查您的网络或发送邮件至 orz#hdslb.com", 2000, "error");
    }
  });
  return false;
}
function set_qure(fsid) {;
  $('._qure .t').html($('#l_id_' + fsid + ' .t').html());
  $('._qure').show();
}
function replyFB(fbid) {
  $("#quoteID").val(fbid);
  $("#comment_text").focus();
}
function commitFeedback() {
  if ('请在这里输入您要发表的评论信息' == $('#comment_text').val()) {
    $('#comment_text').focus();
    return false;
  }
  if ($('#comment_text').val().length > 1000 || $('#comment_text').val().length < 4) {
    alert("评论字数必须在4到1000个之间！");
    $('#comment_text').focus();
    return false;
  }
  $.post("/feedback/post", "msg=" + encodeURIComponent($('#comment_text').val().replace(/%/g, "%25")).replace(/\+/g, "%2B") + ($("#fb_aid").length > 0 ? "&aid=" + $("#fb_aid").val() : "&news_id=" + $("#fb_news_id").val()) + "&action=send&quoteID=" + $("#quoteID").val(),
  function(data) {
    if (data == "OK") {
      if ($("#fb_aid").length > 0) {
        loadFB($("#fb_aid").val(), 1);
      } else {
        loadFB($("#fb_news_id").val(), 1);
      }
    } else {
      alert(data);
    }
  });
}
function InitCardEvent() {
  if ($(card_obj).attr("direction") == "top") {
    $(".a_layer").css("top", $(card_obj).offset().top - $(".a_layer").outerHeight() + 40 + "px");
    $(".a_layer > .bg > .arrow").addClass("arrow_t");
  } else {
    $(".a_layer").css("top", $(card_obj).offset().top + $(card_obj).outerHeight() / 2 - 20 + "px");
  }
  if ($(card_obj).offset().left + $(".a_layer").outerWidth() + $(card_obj).width() + 5 > $(window).width()) {
    $(".a_layer").css("left", $(card_obj).offset().left - 5 - $(".a_layer").outerWidth() + "px");
    $(".a_layer > .bg > .arrow").removeClass("arrow_l");
    $(".a_layer > .bg > .arrow").addClass("arrow_r");
  } else {
    $(".a_layer").css("left", $(card_obj).offset().left + $(card_obj).width() + 5 + "px");
  }
  $(".a_layer").mouseover(function() {
    clearTimeout(evCardTimer);
  });
  $(".a_layer").mouseout(CardEventOut);
}
var tmrCardError = null;
function ShowCardMsg(msg) {
  clearTimeout(tmrCardError);
  $('.a_layer').remove();
  $('<div class="a_layer"><div class="bg"><div class="content"><div class="msg">' + msg + '</div></div><div class="arrow arrow_l" style=""></div></div></div>').appendTo("body");
  InitCardEvent();
}
function attentionUser(obj, uid) {
  var msgbox = new MessageBox();
  $.ajax("/m/attention?uid=" + uid, {
    success: function(data) {
      if (data == 'OK') window.AttentionList.push(uid);
      msgbox.show(obj, data == 'OK' ? '关注成功!': data, data == 'OK' ? 500 : 2000, data == 'OK' ? 'ok': 'warning');
    },
    error: function() {
      msgbox.show(obj, '系统错误，请稍后重试!', 2000, 'error');
    }
  });
}
function unattentionUser(obj, uid) {
  var msgbox = new MessageBox();
  $.ajax("/m/unattention?uid=" + uid, {
    success: function(data) {
      var index = window.AttentionList.indexOf(uid);
      if (index != -1 && data == 'OK') {
        delete window.AttentionList[index];
      }
      msgbox.show(obj, data == 'OK' ? '取消关注成功!': data, data == 'OK' ? 500 : 2000, data == 'OK' ? 'ok': 'warning');
    },
    error: function() {
      msgbox.show(obj, '系统错误，请稍后重试!', 2000, 'error');
    }
  });
}
var card_obj = null;
function ShowCard(obj) {
  clearTimeout(tmrCardError);
  if (typeof(obj.mid) == "undefined") {
    ShowCardMsg("抱歉，该昵称目前不存在哦(*^__^*)");
    return;
  }
  $('.a_layer').remove();
  var attention_me = false;
  var follow_him = false;
  if (typeof(window.AttentionList) != "undefined" && typeof(window.AttentionList) != "null") {
    for (var i = 0; i < window.AttentionList.length; i++) {
      if (window.AttentionList[i] == obj.mid) {
        follow_him = true;
        break;
      }
    }
  }
  if (typeof(obj.attentions) != "undefined" && typeof(obj.attentions) != "null") {
    for (var j = 0; j < obj.attentions.length; j++) {
      if (obj.attentions[j] == window.uid) {
        attention_me = true;
        break;
      }
    }
  }
  var atthtml = '';
  if (follow_him && attention_me) {
    atthtml = '<img class="icon_add addbtn_b" title="加关注" src="http://static.hdslb.com/images/common/transparent.8x7.gif">互相关注<span class="W_vline">|</span><a href="javascript:;" onclick="unattentionUser(this,' + obj.mid + ')" class="W_linkb"><em>取消</em></a>';
  } else if (!follow_him) {
    atthtml = '<a href="javascript:;" onclick="attentionUser(this,' + obj.mid + ')"><img class="icon_add addbtn_a" title="加关注" src="http://static.hdslb.com/images/common/transparent.8x7.gif">加关注</a>';
  } else if (!attention_me) {
    atthtml = '<img class="icon_add addbtn_c" title="已关注" src="http://static.hdslb.com/images/common/transparent.8x7.gif">已关注<span class="W_vline">|</span><a href="javascript:;" onclick="unattentionUser(this,' + obj.mid + ')" class="W_linkb"><em>取消</em></a>';
  }
  $('<div class="a_layer"><div class="bg"><div class="content"><div class="card">' + '<img src="' + obj.face + '" class="face"><div class="t">' + '<a href="http://space.bilibili.tv/' + obj.mid + '" target="_blank">' + obj.name + '</a>' + (obj.approve ? '<a href="http://www.bilibili.tv/html/certified.html" target="_blank" title="哔哩哔哩认证" class="approve"></a>': '') + '</div><div class="address" style="width:150px">' + '<img class="small_icon ' + (obj.sex == '男' ? 'male': (obj.sex == '女' ? 'female': '')) + '" title="' + obj.sex + '" src="http://static.hdslb.com/images/common/transparent.8x7.gif"' + 'alt=""> ' + (obj.place ? obj.place: "未知") + '</div><ul class="userdata" style="clear:top"><li><a href="http://space.bilibili.tv/' + obj.mid + '/follow.html" target="_blank">关注</a> ' + obj.attention + '</li><li class="W_vline">|</li><li><a href="http://space.bilibili.tv/' + obj.mid + '/fans.html" target="_blank">粉丝</a> ' + obj.fans + '</li>' + '<li class="W_vline">|</li><li><a href="http://space.bilibili.tv/' + obj.mid + '" target="_blank">投稿</a> ' + obj.article + '</li></ul></div>' + '<div class="cardinfo">' + (obj.approve ? '<div class="approve">认证资料</div>': "") + obj.description + '</div>' + '<div class="links"><p><a href="http://member.bilibili.tv/#msg&act=new&mid=' + obj.mid + '" target="_blank">私信</a></p><div class="W_addbtn_even">' + atthtml + '</div></div></div><div class="arrow arrow_l" style=""></div></div></div>').appendTo("body");
  InitCardEvent();
}
function ShowLoadCardFail() {
  clearTimeout(tmrCardError);
  ShowCardMsg('<span class="loading">加载失败</span>');
}
function LoadCard(obj, user) {
  card_obj = obj;
  ShowCardMsg('<span class="loading">正在加载中,请稍候..</span>');
  $('<script type="text/javascript" src="http://interface.bilibili.tv/card/' + user + '.js" onerror="ShowLoadCardFail()"><' + '/script>').appendTo('body');
  clearTimeout(tmrCardError);
  tmrCardError = setTimeout(ShowLoadCardFail, 5000);
}
function CardEventOver(obj, user) {
  clearTimeout(evCardTimer);
  evCardTimer = setTimeout(function() {
    clearTimeout(evCardTimer);
    LoadCard(obj, user);
  },
  300);
}
function CardEventOut() {
  clearTimeout(evCardTimer);
  evCardTimer = setTimeout(function() {
    clearTimeout(evCardTimer);
    $('.a_layer').remove();
  },
  100);
}
function bindCardEvent(ele) {
  if (typeof(ele) != "undefined") {
    $(ele).find('a[card]').mouseover(function() {
      CardEventOver(this, $(this).attr('card'));
    }).mouseout(CardEventOut);
  } else {
    $('a[card]').mouseover(function() {
      CardEventOver(this, $(this).attr('card'));
    }).mouseout(CardEventOut);
  }
}
var last_sug_user_start = 0;
function createSuggestUserList(start) {
  var i;
  var k = 0;
  var n = 0;
  $("#rup_user").empty();
  if (start + 5 > suggest_user.length) start = 0;
  for (i in suggest_user) {
    k++;
    if (typeof(start) != "undefined" && k <= start) continue;
    var vo = suggest_user[i];
    var follow_him = false;
    if (typeof(window.AttentionList) != "undefined" && typeof(window.AttentionList) != "null") {
      for (var j = 0; j < window.AttentionList.length; j++) {
        if (window.AttentionList[j] == vo[0]) {
          follow_him = true;
          break;
        }
      }
    }
    if (follow_him) {
      continue;
    }
    $('<li><a href="http://space.bilibili.tv/' + vo[0] + '" target="_blank" card="' + vo[1] + '"><img src="' + vo[2] + '"><div class="name">' + vo[1] + '</div></a><p class="i"><a href="http://member.bilibili.tv/friend?act=add&smod=attention&uid=' + vo[0] + '" class="gz">关注</a></p><div class="info">' + vo[3] + '</div></li>').appendTo("#rup_user");
    last_sug_user_start = k;
    if (++n >= 5) break;
  }
  bindCardEvent();
}
function createSuggestSpList(start) {
  var i;
  var k = 0;
  var n = 0;
  $("#rup_sp").empty();
  if (suggest_sp.length == 0) {
    $('<div class="no_more">没有更多信息</div>').appendTo("#rup_sp");
    return;
  }
  if (start + 5 > suggest_sp.length) start = 0;
  for (i in suggest_sp) {
    k++;
    if (typeof(start) != "undefined" && k <= start) continue;
    var vo = suggest_sp[i];
    if (typeof(vo) == "undefined" || typeof(vo[0]) == "undefined") continue;
    $('<li><a href="/sp/' + vo[0] + '"><img src="' + vo[1] + '" title="' + vo[0] + '"><div class="name">' + vo[0] + '</div></a><p class="i"><b>' + vo[3] + '</b>个视频</p>' + (vo[2] ? '<div class="info">同义词:' + vo[2] + '</div>': '') + '</li>').appendTo("#rup_sp");
    if (++n >= 5) break;
  }
}
function bindPOCoins($po) {
  var ind_n;
  for (var ind_i = 0; ind_i < $po.length; ind_i++) {
    ind_n = parseInt($($po[ind_i]).attr('yb'));
    if (ind_n >= 20 && ind_n < 60) {
      $($po[ind_i]).find("img").css("background", "url(http://static.hdslb.com/images/po-img-bg.png) no-repeat -72px -26px");
    }
    if (ind_n >= 60 && ind_n < 120) {
      $($po[ind_i]).find("img").css("background", "url(http://static.hdslb.com/images/po-img-bg.png) no-repeat -402px -26px");
    }
    if (ind_n >= 120) {
      $($po[ind_i]).find("img").css("background", "url(http://static.hdslb.com/images/po-img-bg.png) no-repeat -572px -26px");
    }
  }
  if ($.browser.msie) {
    $po.addClass('snti');
  }
  var mousein = 0;
  var mouInterval;
  var mouOutInterval;
  mouseOutFunc = function() {
    mousein = 0;
    clearInterval(mouInterval);
    mouOutInterval = setTimeout(function() {
      if (mousein) return;
      clearTimeout(mouOutInterval);
      $('.ov-box').remove();
    },
    100);
  };
  $po.mouseover(function() {
    var self = this;
    mousein = 1;
    mouInterval = setTimeout(function() {
      if (mousein == 1) {
        $('.ov-box').remove();
        $('<div class="ov-box" style="display: none; "><div class="ov"><div class="title"></div><div class="subtitle"></div><img src=""><a class="gk">播放:' + $(self).attr('gk') + '</a><a class="sc">收藏:' + $(self).attr('sc') + '</a><a class="pl">评论:' + $(self).attr('pl') + '</a><a class="pf">(+' + $(self).attr('pf') + ')</a><p class="txt"></p><p class="tg-date"></p><p class="lm"></p></div></div>').prependTo('body');
        $('.ov-box').css({
          left: $(self).offset().left,
          top: $(self).offset().top - 120
        });
        $('.ov-box > .ov > .txt').html($(self).attr('txt'));
        $('.ov-box > .ov > .title').html($(self).find('.t').html());
        $('.ov-box > .ov > .subtitle').html($(self).attr('subtitle'));
        $('.ov-box > .ov > .tg-date').html("日期:" + $(self).attr('tg'));
        $('.ov-box > .ov > .lm').html("UP主:" + $(self).attr('up'));
        $('.ov-box > .ov > img').attr('src', $(self).find('img').attr('src'));
        $('.ov-box').fadeIn(300);
        $('.ov-box').mouseover(function() {
          mousein = 1;
          clearTimeout(mouOutInterval);
        });
        $('.ov-box').mouseout(mouseOutFunc);
        clearTimeout(mouInterval);
      }
    },
    500);
  });
  $po.mouseout(mouseOutFunc);
}
function date_format(ts) {
  var n = new Date();
  var ngt = n.getTime() / 1000 * ts;
  if (ngt < 86400 && ngt > 0) {
    if (ngt < 60) {
      return ngt + "秒前";
    } else if (ngt < 3600) {
      return Math.floor(ngt / 60) + "分钟前";
    } else if (ngt < 86400) {
      return Math.floor(ngt / 3600) + "小时前";
    }
  } else {
    var t = new Date();
    t.setTime(ts * 1000);
    return t.getFullYear() + "/" + (t.getMonth() + 1) + "/" + t.getDate();
  }
}
var mouIntervals = null;
var timi = 0;
function alertCharNums(content) {
  var MaxLength = 1000;
  if (content.value.length > MaxLength) {
    content.value = content.value.substring(0, MaxLength);
  }
  $('#ajaxBackMsg').html('字符统计:' + content.value.length + '/1000');
}
function showGlobalAlert(msg) {
  tips_str = "<div class=\"ui-widget\" id=\"announce_alerts\" style=\"margin: 0px; position: fixed; top: 0px; width: 980px; z-index: 100;\">" + " <div class=\"ui-state-error ui-corner-all\" style=\"padding: 0 .7em;\"> " + "  <p><span class=\"ui-icon ui-icon-alert\" style=\"float: left; margin-right: .3em;margin-top:.1em;\"></span>" + msg + "</p>" + " </div>" + "</div>";
  fc = $($(".z")[0].firstChild);
  fc.before(tips_str);
};
function insertFlash(elm, url, w, h) {
  if (!document.getElementById(elm)) return;
  var str = '<embed height="' + h + '" width="' + w + '" id="' + elm + '_flash" wmode="opaque" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" allowscriptaccess="none" rel="noreferrer" src="' + url + '" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="true" quality="high">';
  document.getElementById(elm).innerHTML = str;
}
var cb_controler;
function cb_initok() {
  cb_controler.setConnectParam(1, __GetCookie('DedeUserID') !== undefined && __GetCookie('DedeUserID') ? __GetCookie('DedeUserID') : 0, "");
  cb_controler.connect();
}
function cb_onconnect() {}
var scrollActivate = true;
function goTop(acceleration, time) {
  if (!scrollActivate) {
    scrollActivate = true;
    return;
  }
  acceleration = acceleration || 0.1;
  time = time || 16;
  var x1 = 0;
  var y1 = 0;
  var x2 = 0;
  var y2 = 0;
  var x3 = 0;
  var y3 = 0;
  if (document.documentElement) {
    x1 = document.documentElement.scrollLeft || 0;
    y1 = document.documentElement.scrollTop || 0;
  }
  if (document.body) {
    x2 = document.body.scrollLeft || 0;
    y2 = document.body.scrollTop || 0;
  }
  var x3 = window.scrollX || 0;
  var y3 = window.scrollY || 0;
  var x = Math.max(x1, Math.max(x2, x3));
  var y = Math.max(y1, Math.max(y2, y3));
  var speed = 1 + acceleration;
  window.scrollTo(Math.floor(x / speed), Math.floor(y / speed));
  if (x > 0 || y > 0) {
    var invokeFunction = "goTop(" + acceleration + ", " + time + ")";
    window.setTimeout(invokeFunction, time);
  }
}
if (!Array.prototype.shuffle) {
  Array.prototype.shuffle = function() {
    for (var j, x, i = this.length; i; j = parseInt(Math.random() * i), x = this[--i], this[i] = this[j], this[j] = x);
    return this;
  };
}
$(function() {
  if (typeof(countInfo) != "undefined") {
    for (i in type_offset) {
      if (typeof(countInfo["c" + i]) != "undefined" && countInfo["c" + i]) {
        if (countInfo["c" + i] != 0) {
          $('.addnew_' + i).html('+' + countInfo["c" + i]);
          $('.addnew_' + i).fadeIn(500);
        }
      }
    }
  }
  if ('http:' == document.location.protocol) {
    $("<div id=\"cb_controler\"></div>").appendTo("body");
    insertFlash("cb_controler", "http://static.hdslb.com/images/bili_notify.swf", 0, 0);
    cb_controler = $("#cb_controler_flash").get(0);
  }
  if ($(".search-keyword").length > 0) {
    var ac = {
      source: function(request, response) {
        var tmp_term_lst = request.term.split(" ");
        $.getJSON("/suggest?jsoncallback=?", {
          term: tmp_term_lst[tmp_term_lst.length - 1].replace(/　/g, ""),
          rnd: Math.random()
        },
        response);
      },
      search: function() {
        var term = this.value;
        var tmp_term_lst = term.split(" ");
        if (tmp_term_lst[tmp_term_lst.length - 1].length < 1) return false;
        if (term.charCodeAt(0) < 255 && term.length < 1 || term.length > 40) {
          return false;
        }
      },
      focus: function() {
        return false;
      },
      select: function(event, ui) {
        this.value = ui.item.value;
        return false;
      }
    };
    $(".search-keyword").attr("autocomplete", "off");
    $(".search-keyword").autocomplete(ac).data("autocomplete")._renderItem = function(ul, item) {
      return $("<li></li>").data("item.autocomplete", item).append("<a style=\"text-align:left\">" + item.value + "<em style=\"float:right;font-size:10px;\"" + (item.match ? " title=\"(Match Token: " + item.match + ")\"": "") + ">" + (item.desc ? item.desc: item.ref + "个") + "</em></a>").appendTo(ul);
    };
  }
  bindCardEvent();
  bindPOCoins($('.po'));
});
